Zavřít reklamu

Apple minulý týden představil mimo jiné novou Apple TV s operačním systémem tvOS. Největší radost vývojářům určitě udělal fakt, že do nové černé krabičky půjdou instalovat aplikace z App Store.

Vývojáři mají hned dvě možnosti. Mohou napsat nativní aplikaci, která má plný přístup k hardwaru Apple TV. Dostupné SDK (sada knihoven pro vývojáře) je hodně podobné tomu, které již vývojáři znají z iPhonu, iPadu, a i programovací jazyky jsou stejné – Objective-C a mladší Swift.

Pro jednodušší aplikace ale Apple nabídl vývojářům ještě druhou možnost v podobě TVML – Television Markup Language. Pokud máte pocit, že je název TVML až podezřele podobný HTML, máte pravdu. Je to opravdu značkovací jazyk založený na XML a hodně podobný právě HTML, jen je značně jednodušší a má striktnější syntaxi. Pro aplikace typu Netflix je ale naprosto ideální. A těžit z toho budou i uživatelé, protože díky striktnosti TVML budou multimediální aplikace vypadat a fungovat hodně podobně.

Cesta k první aplikaci

První, co jsem tedy musel udělat, bylo stáhnout novou betaverzi vývojového prostředí Xcode (verze 7.1 je dostupná zde). Tím jsem získal přístup k tvOS SDK a mohl tak založit nový projekt cílený právě na Apple TV čtvrté generace. Aplikace může být jen pro tvOS nebo je možné tento kód přidat do již existující aplikace pro iOS a vytvořit tak „univerzální“ aplikaci – model je podobný jako dnes u aplikací pro iPhone a iPad.

Problém první: Xcode nabízí jen možnost vytvořit nativní aplikaci. V dokumetaci jsem ale velmi rychle našel část, která vývojářům pomůže tuto kostru změnit a připravit pro TVML. V podstatě je to pár řádek kódu ve Swiftu, které jen na Apple TV vytvoří objekt přes celou obrazovku a načtou hlavní část aplikace, která je už napsaná v JavaScriptu.

Problém druhý: TVML aplikace jsou opravdu hodně podobné webové stránce, a proto se také veškerý kód načítá z internetu. Samotná aplikace je tak vlastně jen „bootloader“, obsahuje jen minimum kódu a nejzákladnější grafické prvky (ikonka aplikace a podobně). Nakonec jsem úspěšně vložil hlavní část JavaScript kódu přímo do aplikace a získal tak možnost alespoň zobrazit vlastní chybovou hlášku, když není Apple TV připojena k internetu.

Třetí drobný problém: iOS 9 a s ním i tvOS striktně vyžaduje, aby veškerá komunikace směrem do internetu probíhala šifrovaně přes HTTPS. Tohle je vlastnost zavedená v iOS 9 pro všechny aplikace a důvodem je tlak na soukromí uživatele a bezpečnost přenášených dat. Takže bude nutné na webový server nasadit SSL certifikát. Ten je možné pořídit už za 5 dolarů (120 korun) na rok nebo můžete použít například službu CloudFlare, která se o HTTPS postará sama, automaticky a bez investic. Druhou možností je toto omezení pro aplikaci vypnout, což zatím jde, ale rozhodně bych to nedoporučoval.

Po pár hodinách čtení dokumentace, kde jsou zatím občas drobné chyby, jsem se dopracoval k hodně základní, ale fungující aplikaci. Ta zobrazila oblíbený text „Hello World“ a dvě tlačítka. Asi dvě hodiny jsem se snažil, aby tlačítko bylo aktivní a něco reálně udělalo. Ale s ohledem na brzkou ranní hodinu jsem šel raději spát… a to bylo dobře.

Druhý den jsem dostal spásný nápad stáhnout si hotovou ukázkovou TVML aplikaci přímo od Applu. V kódu jsem velmi rychle našel, co jsem hledal, a tlačítko bylo aktivní a fungovalo. Mimo jiné jsem na internetu objevil i první dva díly tutoriálu jak na tvOS. Oba zdroje hodně pomohly, takže jsem založil nový projekt a pustil se do první reálné aplikace.

První reálná aplikace

Začal jsem úplně od nuly, první TVML stránkou. Výhoda je, že Apple si pro vývojáře připravil 18 hotových TVML šablon, které stačí zkopírovat z dokumentace. Úprava jedné šablony zabrala něco kolem hodiny, a to primárně proto, že jsem připravoval naše API, aby mohlo do Apple TV poslat hotové TVML včetně veškerý potřebných dat.

Druhá šablona už zabrala jen asi 10 minut. Přidal jsem dva JavaScripty – většina kódu v nich pochází přímo od Applu, takže proč znovu vynalézat kolo. Apple připravil scripty, které se postarají o načítání a zobrazení TVML šablon včetně doporučeného indikátoru načítání obsahu a případného zobrazení chyby.

V čase pod dvě hodiny jsem tak dokázal sestavit hodně holou, ale fungující aplikaci PLAY.CZ. Umí zobrazit seznam rádií, umí ho filtrovat podle žánru a umí rádio spustit. Ano, spousta věcí v aplikaci není, ale základ funguje.

[youtube id=“kLKvWC-rj7Q“ width=“620″ height=“360″]

Výhodou je, že aplikace v podstatě není nic jiného než speciální verze webové stránky, kterou pohání JavaScript a je možno použít i CSS pro úpravu vzhledu.

Apple ještě vyžaduje několik dalších věcí, které je nutno připravit. Ikonka aplikace není jedna, ale jsou hned dvě – menší a větší. Novinkou je, že ikonka není prostý obrázek, ale obsahuje paralax efekt a je složena ze 2 až 5 vrstev (pozadí, objekty uprostřed a popředí). Stejný efekt mohou obsahovat všechny aktivní obrázky napříč aplikací.

Každá vrstva je vlastně jen obrázek na průhledném pozadí. Apple připravil vlastní aplikaci pro sestavení těchto vrtstvených obrázků a v brzké době slibuje uvolnit i exportní plugin pro Adobe Photoshop.

Další požadavek je „Top Shelf“ obrázek. Pokud si uživatel umístí aplikaci na prominentní místo v horní řadě (na horní poličce), musí aplikace dodat i obsah pro plochu nad seznamem aplikací. Tam může být buď jen prostý obrázek nebo se může jednat o aktivní oblast třeba se seznamem oblíbených filmů nebo v našem případě rádií.

Spousta vývojářů je teprve na začátku zkoumání možností nového tvOS. Dobrá zpráva je, že napsat obsahovou aplikaci je velmi snadné a Apple šel vývojářům s TVML hodně naproti. Sestavit aplikaci (například PLAY.CZ nebo iVysílání) by tak mělo být snadné a rychlé. Je tak velká šance, že současně se zahájením prodeje nové Apple TV bude připravena i velké množství aplikací.

Napsat nativní aplikaci nebo přenést hru z iOS na tvOS sice bude náročnější, ale ne tak moc. Největší překážkou bude jiné ovládání a omezení v podobě 200 MB na aplikaci. Nativní aplikace si s sebou může z obchodu stáhnout jen omezenou část dat a vše ostatní si musí stáhnout dodatečně a nemá jistotu, že systém tato data nesmaže. Vývojáři si s tímto omezením ale určitě rychle poradí, a to i díky dostupnosti sady nástrojů pod označením „App Thinning“, které jsou i součástí iOS 9.

Témata: , ,
.