Apple esitles eelmisel nädalal muuhulgas uus Apple TV tvOS operatsioonisüsteemiga. Kindlasti valmistas arendajatele kõige rohkem rõõmu asjaolu, et uude musta kasti saab installida rakendusi App Store'ist.
Arendajatel on kaks võimalust. Nad saavad kirjutada omarakenduse, millel on täielik juurdepääs Apple TV riistvarale. Saadaolev SDK (arendajatele mõeldud teekide komplekt) on väga sarnane sellega, mida arendajad juba iPhone'ist, iPadist teavad, ja programmeerimiskeeled on samad - Objective-C ja noorem Swift.
Kuid lihtsamate rakenduste jaoks pakkus Apple arendajatele teist võimalust TVML-i kujul - Television Markup Language. Kui teile tundub, et nimi TVML näeb kahtlaselt välja nagu HTML, on teil õigus. See on tõesti XML-il põhinev märgistuskeel ja väga sarnane HTML-ile, ainult et see on palju lihtsam ja rangema süntaksiga. Kuid see sobib ideaalselt selliste rakenduste jaoks nagu Netflix. Kasu saavad sellest ka kasutajad, sest TVML-i ranguse tõttu näevad multimeediarakendused samasugused välja ja töötavad.
Esimese rakenduse tee
Seega pidin esimese asjana alla laadima Xcode arenduskeskkonna uue beetaversiooni (versioon 7.1 on saadaval siin). See andis mulle juurdepääsu tvOS SDK-le ja sain alustada uut projekti, mis oli suunatud konkreetselt neljanda põlvkonna Apple TV-le. Rakendus võib olla ainult tvOS-i jaoks või koodi saab lisada olemasolevale iOS-i rakendusele, et luua "universaalne" rakendus – mudel, mis sarnaneb tänapäeval iPhone'i ja iPadi rakendustega.
Esimene probleem: Xcode pakub ainult võimalust luua omarakendus. Kuid ma leidsin väga kiiresti dokumentatsioonist jaotise, mis aitab arendajatel seda skeletti muuta ja TVML-i jaoks ette valmistada. Põhimõtteliselt on tegemist mõne Swifti koodireaga, mis lihtsalt Apple TV-s loovad täisekraaniobjekti ja laadivad rakenduse põhiosa, mis on juba JavaScriptis kirjutatud.
Probleem kaks: TVML-i rakendused on tõesti väga sarnased veebilehega ja seetõttu laetakse kogu kood ka Internetist. Rakendus ise on tegelikult lihtsalt "bootloader", see sisaldab ainult minimaalset koodi ja kõige elementaarsemaid graafilisi elemente (rakenduse ikoon jms). Lõpuks panin JavaScripti põhikoodi edukalt otse rakendusse ja sain võimaluse kuvada vähemalt kohandatud veateade, kui Apple TV pole Internetiga ühendatud.
Kolmas väike probleem: iOS 9 ja sellega koos tvOS nõuab rangelt, et kogu suhtlus interneti suunas toimuks krüpteeritult HTTPS-i kaudu. See funktsioon on iOS 9-s kõigi rakenduste jaoks kasutusele võetud ja selle põhjuseks on surve kasutajate privaatsusele ja andmete turvalisusele. Seega on vaja veebiserverisse juurutada SSL-sertifikaat. Seda saab osta juba 5 dollari (120 krooni) eest aastas või kasutada näiteks teenust CloudFlare, mis hoolitseb HTTPS-i eest ise, automaatselt ja ilma investeeringuteta. Teine võimalus on see piirang rakendusele välja lülitada, mis on hetkel võimalik, aga ma seda kindlasti ei soovitaks.
Pärast mõnetunnist dokumentatsiooni lugemist, kus ikka aeg-ajalt pisivigu esineb, töötasin välja väga elementaarse, kuid toimiva rakenduse. See kuvas populaarset teksti "Tere maailm" ja kahte nuppu. Veetsin umbes kaks tundi, et nupp tööle saada ja midagi reaalselt teha. Kuid arvestades varajasi hommikutunde, eelistasin magama minna... ja see oli hea.
Teisel päeval tuli mul helge mõte laadida otse Apple'ist alla valmis TVML-i näidisrakendus. Leidsin otsitava väga kiiresti koodist ja nupp oli reaalajas ja töötas. Muuhulgas avastasin internetist ka tvOS-i õpetuse kaks esimest osa. Mõlemad ressursid aitasid palju, nii et alustasin uue projektiga ja alustasin oma esimest päris rakendust.
Esimene tõeline rakendus
Alustasin täiesti nullist, esimene TVML-leht. Eeliseks on see, et Apple on koostanud arendajatele 18 valmis TVML malli, mis tuleb lihtsalt dokumentatsioonist kopeerida. Ühe malli redigeerimine võttis aega umbes tund, peamiselt seetõttu, et valmistasin meie API-d ette valmis TVML koos kõigi vajalike andmetega Apple TV-sse saatmiseks.
Teise malli jaoks kulus vaid umbes 10 minutit. Lisasin kaks JavaScripti – suurem osa nendes olevast koodist pärineb otse Apple’ilt, miks siis ratast uuesti leiutada. Apple on ette valmistanud skriptid, mis hoolitsevad TVML-i mallide laadimise ja kuvamise eest, sealhulgas soovitatud sisu laadimise indikaator ja võimalikud vead.
Vähem kui kahe tunniga sain kokku panna väga palja, kuid toimiva PLAY.CZ rakenduse. See võib kuvada raadiojaamade loendi, filtreerida seda žanri järgi ja käivitada raadio. Jah, palju asju pole rakenduses, kuid põhitõed toimivad.
[youtube id=”kLKvWC-rj7Q” width=”620″ height=”360″]
Eeliseks on see, et rakendus pole põhimõtteliselt midagi muud kui veebilehe spetsiaalne versioon, mille toiteallikaks on JavaScript ja mille välimust saab muuta ka CSS-i abil.
Apple vajab ettevalmistamiseks veel mõnda asja. Rakenduse ikoon pole mitte üks, vaid kaks – väiksem ja suurem. Uudsus seisneb selles, et ikoon ei ole lihtne pilt, vaid sisaldab parallaksiefekti ja koosneb 2 kuni 5 kihist (taust, objektid keskel ja esiplaanil). Kõik rakenduses olevad aktiivsed pildid võivad sisaldada sama efekti.
Iga kiht on tegelikult lihtsalt pilt läbipaistval taustal. Apple on nende kihiliste piltide koostamiseks ette valmistanud oma rakenduse ja lubab peagi välja anda Adobe Photoshopi ekspordiplugina.
Teine nõue on pilt "Ülemine riiul". Kui kasutaja asetab rakenduse ülemisele reale (ülemisele riiulile) silmapaistvale kohale, peab rakendus pakkuma sisu ka rakenduste loendi kohal olevale töölauale. See võib olla kas lihtsalt lihtne pilt või see võib olla aktiivne ala, näiteks lemmikfilmide loendiga või meie puhul raadiojaamadega.
Paljud arendajad alles hakkavad uue tvOS-i võimalusi uurima. Hea uudis on see, et sisurakenduse kirjutamine on väga lihtne ja Apple on TVML-iga arendajate jaoks kaugele jõudnud. Rakenduse loomine (näiteks PLAY.CZ või iVyszílő) peaks olema lihtne ja kiire. Suure tõenäosusega valmib suur hulk rakendusi samal ajal, kui uus Apple TV müügile jõuab.
Omarakenduse kirjutamine või mängu teisaldamine iOS-ist tvOS-i on keerulisem, kuid mitte palju. Suurim takistus on erinevad juhtnupud ja 200 MB piirang rakenduse kohta. Native rakendus saab poest alla laadida vaid piiratud osa andmetest ja kõik muu tuleb lisaks alla laadida ning pole garantiid, et süsteem neid andmeid ei kustuta. Kuid arendajad tegelevad selle piiranguga kindlasti kiiresti, seda ka tänu tööriistakomplektile nimega "App Thinning", mis on samuti iOS 9 osa.
Tore artikkel. Aitäh. Võib-olla näeme aja jooksul Apple'ilt ka kasutajalahendust lihtsamate rakenduste (lahenduste) ettevalmistamiseks, nagu on võimalik FileMaker for iOS-iga, ilma et ma ise arendaja oleks.
Teoreetiliselt… Swifti laaduris on paar rida, mis on endiselt samad, muutub ainult esimese TVML-faili URL. Kui keegi soovib, võib ta tõenäoliselt kirjutada skripti, mis saaks teie URL-iga kaugjuhtimise käivitada ja saata tagasi IPA-faili. Või kui sul on mac, siis pole probleemi saata projekt, kuhu paned lihtsalt URL-i ja alustad ehitamist. Eeliseks on see, et kui TVML on väljaspool rakendust, siis tegelikult on vaja ainult ühte avalikku ja võimalik, et ka ühte privaatset (arendus) buildi ning TVML-i saab muuta vaid serveris ja seega ka rakenduse toimimist.
"Rakendus võib olla ainult tvOS-i jaoks või koodi saab lisada olemasolevale iOS-i rakendusele, et luua kõigile sobiv rakendus – mudel, mis sarnaneb praeguste iPhone'i ja iPadi rakendustega."
Huvitav, mida sa silmas pead? Mina isiklikult ei ole leidnud kusagilt võimalust teha 1 build, mis sisaldaks universaalset iPhone'i, iPadi ja Apple TV-d.. kuna need on eraldi SDK-d (sarnaselt OSX-ile), siis on vaja tvOS-i jaoks lisasihti ja seega ka eraldi buildi. Kas mul on midagi puudu?
Xcode 7.1-s saab tvOS-i rakendusi lisada juba olemasoleva projekti teise sihtmärgina – sarnaselt Apple Watchi rakendustele või võib-olla teavituskeskuse vidinale. Samas ma veel ei tea, kuidas see poodi üles laetakse... Ma eeldan, et Xcode saadab ühe paki ja App Store jagab selle siis ära... Ilmselt sarnane sellele, mida nad praegu Watchiga teevad
noo.. minu arust on need 2 täiesti erinevat asja.. kell on laiendus.. või vähemalt oli kuni watchOS 2.0.. anti koos iOS-i sihtmärgiga ja ei töötanud isegi ilma iPhone'ita.. ATV on eraldiseisev üksus.. sellest ma räägingi , kas ATV build tuleb eraldi (peab maksma 2$) ja lisaks maksis iOS 2$ või saab universaalset anda 2 dollarit nii iOS-i kui ka ATV-de jaoks. ATV-de perekond.
nii et tegelik käivitamine näitab, kuid see käitub tõesti samamoodi nagu näiteks Apple Watchi kood. Vastasel juhul on dokumentatsioonis kirjas, et olemasolevale rakendusele saab lisada tvOS-i koodi ja nii saab korraga müüa ühte äppi (App Store'is üks olem) nii iOS-ile kui tvOS-ile - üks ost eest kliendile või eraldi üksusena - eraldi ost iOS-i ja tvOS-i jaoks.
Täpsustuseks, see ei ole 200 MB rakenduse kohta, vaid 200 MB salvestatakse kohapeal ja ülejäänu laaditakse vajadusel võrgust alla
Aitäh, seda ma arvasin, aga ilmselt sõnastasin valesti. Kõik üle 200 MB (või kõik lisaks allalaaditud) salvestatakse vahemällu ja kui süsteem otsustab, et ruum hakkab otsa saama, hakkab see kustutama – mis tõenäoliselt ei juhtu enne, kui on piisavalt vaba ruumi ja siis kõige vähem kasutatud sisu kustutatakse, nii et praktikas pole see tõenäoliselt eriline probleem.
Mida ma veel uurima pean, väidetavalt see limiit mängudele ei kehti või mäng võib otse baasis olla suurem kui 200 MB. Aga ma ei tea siiani, kuidas seda täpselt mõeldakse. On täiesti võimalik, et Apple alles kohandab seda poliitikat vastavalt arendajate tagasisidele.
hehe Pokemon TCG – 4 GB, Telli kaos internetist – 1,6 GB Hearthstone 1,3 GB Mind huvitab see väga.
seal oli info, et mängudel on erirežiim. Panen nüüd üksikasjad kokku ja me lõpetame artikli.
Ma ei saa sellega hakkama ja vabandan juba ette, kui kedagi solvan, aga mul on lihtsalt tohutu, siiras ja siiras rõõm, mida tahtsin teiega jagada...
Päev pärast uue Apple TV väljakuulutamist ei olnud ma laisk ja registreerusin Apple'i loteriile (kas ma valin?) võimalusega hankida arendajakomplekt juba enne selle müüki tulekut.
Eile õhtul kirjutas Apple mulle, et valis mind esimesse partii :)
Niisiis, ma ei ole sama, kes selle artikli autor ja ausalt öeldes töötan Apple TV jaoks mõeldud Preschool Brasnicce kallal – see on saadaval teie App Store'is oktoobris :)
nii et mul on tunne, et kõik, kes registreerusid, said selle ilmselt kätte :) Tellisin ka eile ja ootan väga-väga... Ja tean veel üht inimest, kes samuti oma kohaletoomist ootab...
Igatahes seni tundub, et müügiga alustades tuleb ilmselt palju äppe :)
Kõik ilmselt ei tee seda - nad ei andnud seda mulle :(
:( Mul on kahju sinust.
Kui keegi soovib, siis mul on kaheksa valget Apple'i kleebist... võin postiga saata...