Apple minulý týždeň predstavil okrem iného novú Apple TV s operačným systémom tvOS. Najväčšiu radosť vývojárom určite urobil fakt, že do novej čiernej krabičky pôjdu inštalovať aplikácie z App Store.
Vývojári majú hneď dve možnosti. Môžu napísať natívnu aplikáciu, ktorá má plný prístup k hardvéru Apple TV. Dostupné SDK (sada knižníc pre vývojárov) je veľmi podobné tomu, ktoré už vývojári poznajú z iPhonu, iPadu, a aj programovacie jazyky sú rovnaké – Objective-C a mladší Swift.
Pre jednoduchšie aplikácie ale Apple ponúkol vývojárom ešte druhú možnosť v podobe TVML – Television Markup Language. Pokiaľ máte pocit, že je názov TVML až podozrivo podobný HTML, máte pravdu. Je to naozaj značkovací jazyk založený na XML a veľmi podobný práve HTML, len je značne jednoduchší a má striktnejšiu syntax. Pre aplikácie typu Netflix je ale úplne ideálny. A ťažiť z toho budú aj užívatelia, pretože vďaka striktnosti TVML budú multimediálne aplikácie vyzerať a fungovať veľmi podobne.
Cesta k prvej aplikácii
Prvé, čo som teda musel urobiť, bolo stiahnuť novú beta verziu vývojového prostredia Xcode (verzia 7.1 je dostupná tu). Tým som získal prístup k tvOS SDK a mohol tak založiť nový projekt cielený práve na Apple TV štvrtej generácie. Aplikácia môže byť len pre tvOS alebo je možné tento kód pridať do už existujúcej aplikácie pre iOS a vytvoriť tak „univerzálnu“ aplikáciu – model je podobný ako dnes pri aplikáciách pre iPhone a iPad.
Problém prvý: Xcode ponúka len možnosť vytvoriť natívnu aplikáciu. V dokumetácii som ale veľmi rýchlo našiel časť, ktorá vývojárom pomôže túto kostru zmeniť a pripraviť pre TVML. V podstate je to pár riadkov kódu v Swifte, ktoré len na Apple TV vytvoria objekt cez celú obrazovku a načítajú hlavnú časť aplikácie, ktorá je už napísaná v JavaScripte.
Problém druhý: TVML aplikácie sú naozaj veľmi podobné webovej stránke, a preto sa aj všetok kód načíta z internetu. Samotná aplikácia je tak vlastne len „bootloader“, obsahuje len minimum kódu a najzákladnejšie grafické prvky (ikonka aplikácie a podobne). Nakoniec som úspešne vložil hlavnú časť JavaScript kódu priamo do aplikácie a získal tak možnosť aspoň zobraziť vlastnú chybovú hlášku, keď nie je Apple TV pripojená k internetu.
Tretí drobný problém: iOS 9 as ním aj tvOS striktne vyžaduje, aby všetka komunikácia smerom do internetu prebiehala šifrovane cez HTTPS. Toto je vlastnosť zavedená v iOS 9 pre všetky aplikácie a dôvodom je tlak na súkromie používateľa a bezpečnosť prenášaných dát. Takže bude nutné na webový server nasadiť SSL certifikát. Ten je možné zaobstarať už za 5 dolárov (120 korún) na rok alebo môžete použiť napríklad službu CloudFlare, ktorá sa o HTTPS postará sama, automaticky a bez investícií. Druhou možnosťou je toto obmedzenie pre aplikáciu vypnúť, čo zatiaľ ide, ale rozhodne by som to neodporúčal.
Po pár hodinách čítania dokumentácie, kde sú zatiaľ občas drobné chyby, som sa dopracoval k veľmi základnej, ale fungujúcej aplikácii. Tá zobrazila obľúbený text „Hello World“ a dve tlačidlá. Asi dve hodiny som sa snažil, aby tlačidlo bolo aktívne a niečo reálne urobilo. Ale s ohľadom na skorú rannú hodinu som šiel radšej spať… a to bolo dobre.
Druhý deň som dostal spásny nápad stiahnuť si hotovú ukážkovú TVML aplikáciu priamo od Applu. V kóde som veľmi rýchlo našiel, čo som hľadal, a tlačidlo bolo aktívne a fungovalo. Okrem iného som na internete objavil aj prvé dva diely tutoriálu ako na tvOS. Oba zdroje veľmi pomohli, takže som založil nový projekt a pustil sa do prvej reálnej aplikácie.
Prvá reálna aplikácia
Začal som úplne od nuly, prvou TVML stránkou. Výhoda je, že Apple si pre vývojárov pripravil 18 hotových TVML šablón, ktoré stačí skopírovať z dokumentácie. Úprava jednej šablóny zabrala niečo okolo hodiny, a to primárne preto, že som pripravoval naše API, aby mohlo do Apple TV poslať hotové TVML vrátane všetkých potrebných dát.
Druhá šablóna už zabrala iba asi 10 minút. Pridal som dva JavaScripty – väčšina kódu v nich pochádza priamo od Applu, takže prečo znova vynájsť koleso. Apple pripravil scripty, ktoré sa postarajú o načítanie a zobrazenie TVML šablón vrátane odporúčaného indikátora načítania obsahu a prípadného zobrazenia chyby.
V čase pod dve hodiny som tak dokázal zostaviť veľmi holú, ale fungujúcu aplikáciu PLAY.CZ. Vie zobraziť zoznam rádií, vie ho filtrovať podľa žánru a vie rádio spustiť. Áno, veľa vecí v aplikácii nie je, ale základ funguje.
[youtube id="kLKvWC-rj7Q" width="620" height="360"]
Výhodou je, že aplikácia v podstate nie je nič iné ako špeciálna verzia webovej stránky, ktorú poháňa JavaScript a je možné použiť aj CSS na úpravu vzhľadu.
Apple ešte vyžaduje niekoľko ďalších vecí, ktoré treba pripraviť. Ikonka aplikácie nie je jedna, ale sú hneď dve - menšie a väčšie. Novinkou je, že ikonka nie je jednoduchý obrázok, ale obsahuje paralax efekt a je zložená z 2 až 5 vrstiev (pozadia, objekty uprostred a popredia). Rovnaký efekt môžu obsahovať všetky aktívne obrázky naprieč aplikáciou.
Každá vrstva je vlastne iba obrázok na priehľadnom pozadí. Apple pripravil vlastnú aplikáciu na zostavenie týchto vrtstvených obrázkov av blízkej dobe sľubuje uvoľniť aj exportný plugin pre Adobe Photoshop.
Ďalšia požiadavka je „Top Shelf“ obrázok. Pokiaľ si užívateľ umiestni aplikáciu na prominentné miesto v hornom rade (na hornej poličke), musí aplikácia dodať aj obsah pre plochu nad zoznamom aplikácií. Tam môže byť buď len prostý obrázok alebo môže ísť o aktívnu oblasť napríklad so zoznamom obľúbených filmov alebo v našom prípade rádií.
Veľa vývojárov je ešte len na začiatku skúmania možností nového tvOS. Dobrá správa je, že napísať obsahovú aplikáciu je veľmi jednoduché a Apple šiel vývojárom s TVML veľa naproti. Zostaviť aplikáciu (napríklad PLAY.SK alebo iVysielanie) by tak malo byť jednoduché a rýchle. Je taká veľká šanca, že súčasne so začatím predaja novej Apple TV bude pripravená aj veľké množstvo aplikácií.
Napísať natívnu aplikáciu alebo preniesť hru z iOS na tvOS síce bude náročnejšie, ale nie tak veľa. Najväčšou prekážkou bude iné ovládanie a obmedzenie v podobe 200 MB na aplikáciu. Natívna aplikácia si so sebou môže z obchodu stiahnuť len obmedzenú časť dát a všetko ostatné si musí stiahnuť dodatočne a nemá istotu, že systém tieto dáta nezmaže. Vývojári si s týmto obmedzením ale určite rýchlo poradia, a to aj vďaka dostupnosti sady nástrojov pod označením „App Thinning“, ktoré sú aj súčasťou iOS 9.
Pekný článok. Vďaka. Možno sa dočkáme časom od Apple aj užívateľského riešenia prípravy jednoduchších aplikácií (riešení), ako je to možné pri FileMakeri pre iOS bez toho, aby som bol vývojár.
Teoreticky… ten Swift loader je pár riadkov, ktoré sú stále rovnaké, len sa zmení URL pre prvý TVML súbor. Pokiaľ niekto bude trošku chcieť, môže asi napísať script, ktorý by mohol vzdialene spustiť build s vašou URL a poslať späť IPA súbor. Alebo ak máte mac, nie je problém poslať projekt, kam sa len vloží URL a spustí sa build. Výhoda je, že pokiaľ je TVML mimo aplikácie, stačí vám vlastne jeden public build a prípadne jeden privátny (vývojový) a môžete meniť len TVML na serveri a tým aj fungovanie aplikácie.
„Aplikácia môže byť len pre tvOS alebo je možné tento kód pridať do už existujúcej aplikácie pre iOS a vytvoriť tak „univerzálnu“ aplikáciu – model je podobný ako dnes pri aplikáciách pre iPhone a iPad.“
zaujímalo by ma, ako to myslite? Ja osobne nenašiel nikde spôsob, ako urobit 1 build, ktory bude mať v sebe universal iPhone, iPad a Apple TV. ?
v Xcode 7.1 ide pridať tvOS aplikácie ako ďalší target do už existujúceho projektu – podobne ako aplikácia pre Apple Watch alebo napríklad widget pre notifikačné centrum. Ako sa to potom ale bude nahrávať do storu zatiaľ neviem... Predpokladám, že Xcode pošle jeden balíček a App Store si to potom rozdelí... Asi podobne ako to teraz robia s Watch
noo.. to podľa mňa sú 2 úplne iné veci.. watch je extension.. alebo aspoň do doby watchOS 2.0 bola.. davala sa spolu s targetom iOS a bez iPhonu ani nefungovala.. ATV je samostatna entita.. ide mi o to , či bude build pre ATV samostatný (treba paid za 2$) a vedľa toho iOS paid za 2$, alebo bude možné urobiť universal 2$ build na iOS aj ATV.. zatiaľ mi príde, že nie, pretože ani iOS target neponúka device family pre ATV..
tak až reálne spustenie ukáže, ale chová sa to naozaj rovnako ako napríklad Apple Watch kód. Inak priamo v dokumentácii je, že pôjde pridať kód pre tvOS do existujúcej aplikácie a bude tak možné predávať jednu appku (jedna entita v App Store) pre iOS aj tvOS súčasne – jeden nákup pre zákazníka, alebo ako oddelenú entitu – oddelený nákup pre iOS a pre tvOS.
Len pre upresnenie, nie je to 200MB na aplikáciu, ale 200MB lokálne uložených a zvyšok sťahovaných z netu v prípade potreby
Ďakujem, ja som to tak aj myslel, ala asi som to zle formuloval. Všetko nad 200MB (resp. všetko dodatočne stiahnuté) sa ukladá ako cache a pokiaľ sa systém rozhodne, že dochádza miesto, začne mazať – čo sa asi nestane, kým bude dosť voľného miesta a potom sa bude mazať asi ten najmenej používaný obsah, takže to v praxi asi nebude veľmi problém.
Čo ešte musím zistiť, údajne sa tento limit nebude týkať hier, resp. hra by mohla byť väčšia ako 200MB hneď v základe. Ale zatiaľ presne neviem, ako je toto presne myslené. Je dosť možné, že Apple ešte stále upravuje túto polituku podľa ohlasov vývojárov.
hehe Pokemon TCG – 4 GB, Order chaos online – 1,6 GB Hearthstone 1,3 GB Na toto som fakt zvedavý.
objavila sa informácia, že hry majú zvláštny režim. Podorobnosti dávam teraz dohromady a článok doplníme.
Nedá mi to a vopred sa ospravedlňujem, či tým niekoho nahnevam, ale mám jednoducho obrovskú, uprimnú a nefalsovanú radosť, s ktorou som sa s vami chcel podeliť…
Deň po ohlásení novej Apple TV som nelenil a prihlásil sa k lotérii (či vyberiem?) Apple s možnosťou získania Developer Kitu ešte predtým, než pôjde do predaja.
Včera večer mi Apple napísal, že ma vybral do prvej varky :)
Takže nelenim rovnako ako autor tohto článku a poctivo makam na Predskolni Brasnicke pre Apple TV - k dostani vo vasom App Store počas októbra :)
tak mám pocit, že ju snáď dostal každý, kto sa registroval :) Tiež som včera objednával a veľmi a veľmi sa teším… A poznám ešte jedného človeka, ktorý už tiež čaká na svoju dodávku…
Každopádne zatiaľ sa zdá, že aplikácií bude so začatím predaja asi naozaj veľa :)
Každý asi nie – mňa ju nedali :(
:( tak to ma mrzí.
Ak by niekto chcel, mám osem bielych nalepiek Apple… Môžem poslať postou…