Apple je prejšnji teden med drugim predstavil novi Apple TV z operacijskim sistemom tvOS. Razvijalce je zagotovo najbolj razveselilo dejstvo, da je v novo črno skrinjico mogoče namestiti aplikacije iz trgovine App Store.
Razvijalci imajo dve možnosti. Lahko napišejo izvorno aplikacijo, ki ima popoln dostop do strojne opreme Apple TV. Razpoložljivi SDK (nabor knjižnic za razvijalce) je zelo podoben tistemu, kar razvijalci že poznajo iz iPhona, iPada, programski jeziki pa so enaki – Objective-C in mlajši Swift.
Toda za enostavnejše aplikacije je Apple razvijalcem ponudil drugo možnost v obliki TVML - Television Markup Language. Če se vam zdi, da ime TVML sumljivo spominja na HTML, imate prav. V resnici je označevalni jezik, ki temelji na XML in je zelo podoben HTML, le da je veliko enostavnejši in ima strožjo sintakso. Vendar je popolnoma popoln za aplikacije, kot je Netflix. Od tega bodo imeli koristi tudi uporabniki, saj bodo zaradi strogosti TVML večpredstavnostne aplikacije videti in delovale skoraj enako.
Pot do prve prijave
Zato sem moral najprej prenesti novo različico beta razvojnega okolja Xcode (na voljo je različica 7.1 zde). To mi je omogočilo dostop do tvOS SDK in sem lahko začel nov projekt, ki je posebej namenjen četrti generaciji Apple TV. Aplikacija je lahko samo za tvOS ali pa se koda lahko doda obstoječi aplikaciji za iOS, da se ustvari "univerzalna" aplikacija – model, podoben današnjim aplikacijam za iPhone in iPad.
Prva težava: Xcode ponuja samo možnost ustvarjanja izvorne aplikacije. Sem pa zelo hitro našel razdelek v dokumentaciji, ki bo razvijalcem pomagal spremeniti to okostje in ga pripraviti za TVML. V bistvu gre za nekaj vrstic kode v Swiftu, ki samo na Apple TV ustvarijo celozaslonski objekt in naložijo glavni del aplikacije, ki je že napisana v JavaScriptu.
Druga težava: Aplikacije TVML so res zelo podobne spletni strani, zato se vsa koda prav tako naloži iz interneta. Sama aplikacija je pravzaprav samo "bootloader", vsebuje le minimalno kodo in najosnovnejše grafične elemente (ikona aplikacije in podobno). Na koncu sem glavno kodo JavaScript uspešno vstavil neposredno v aplikacijo in dobil možnost, da vsaj prikažem sporočilo o napaki po meri, ko Apple TV ni povezan z internetom.
Tretja majhna težava: iOS 9 in z njim tvOS striktno zahtevata, da vsa komunikacija do interneta poteka šifrirano prek HTTPS. To je funkcija, uvedena v iOS 9 za vse aplikacije, razlog pa je pritisk na zasebnost uporabnikov in varnost podatkov. Zato bo treba na spletni strežnik namestiti SSL certifikat. Kupite ga lahko že za 5 $ (120 kron) na leto ali pa uporabite na primer storitev CloudFlare, ki bo za HTTPS poskrbela sama, avtomatsko in brez vlaganja. Druga možnost je izključitev te omejitve za aplikacijo, kar je zaenkrat sicer možno, a vsekakor odsvetujem.
Po nekajurnem prebiranju dokumentacije, kjer so še vedno občasne manjše napake, sem izdelal zelo osnovno, a delujočo aplikacijo. Prikazal je priljubljeno besedilo "Hello World" in dva gumba. Približno dve uri sem poskušal doseči, da bi bil gumb aktiven in dejansko nekaj naredil. A glede na zgodnje jutranje ure sem šel raje spat… in to je bilo dobro.
Pred dnevi se mi je porodila pametna ideja, da prenesem že pripravljeno vzorčno aplikacijo TVML neposredno iz Apple-a. V kodi sem zelo hitro našel, kar sem iskal, in gumb je bil živ in deloval. Med drugim sem na internetu odkril tudi prva dva dela tutoriala tvOS. Oba vira sta veliko pomagala, zato sem začel nov projekt in začel svojo prvo pravo aplikacijo.
Prva prava aplikacija
Začel sem popolnoma iz nič, prva stran TVML. Prednost je v tem, da je Apple za razvijalce pripravil 18 že pripravljenih predlog TVML, ki jih je treba le prepisati iz dokumentacije. Urejanje ene predloge je trajalo približno eno uro, predvsem zato, ker sem pripravljal naš API za pošiljanje končnega TVML z vsemi potrebnimi podatki na Apple TV.
Druga predloga je trajala le približno 10 minut. Dodal sem dva JavaScripta – večina kode v njiju prihaja neposredno iz Appla, zakaj bi torej znova izumljali kolo. Apple je pripravil skripte, ki skrbijo za nalaganje in prikaz TVML predlog, vključno s priporočenim indikatorjem nalaganja vsebine in morebitnim prikazom napak.
V manj kot dveh urah mi je uspelo sestaviti zelo golo, a delujočo aplikacijo PLAY.CZ. Lahko prikaže seznam radijskih postaj, lahko ga filtrira po žanru in lahko zažene radio. Da, veliko stvari ni v aplikaciji, vendar osnove delujejo.
[youtube id=”kLKvWC-rj7Q” width=”620″ height=”360″]
Prednost je v tem, da aplikacija v bistvu ni nič drugega kot posebna različica spletne strani, ki jo poganja JavaScript, za spreminjanje videza pa lahko uporabite tudi CSS.
Apple potrebuje še nekaj stvari za pripravo. Ikona aplikacije ni ena, ampak dve - manjša in večja. Novost je, da ikona ni preprosta slika, ampak vsebuje učinek paralakse in je sestavljena iz 2 do 5 slojev (ozadje, objekti v sredini in ospredju). Vse aktivne slike v aplikaciji lahko vsebujejo enak učinek.
Vsak sloj je pravzaprav le slika na prozornem ozadju. Apple je pripravil lastno aplikacijo za sestavljanje teh večplastnih slik in obljublja, da bo kmalu izdal izvozni vtičnik za Adobe Photoshop.
Druga zahteva je slika "Top Shelf". Če uporabnik postavi aplikacijo na vidno mesto v zgornji vrstici (na zgornji polici), mora aplikacija zagotoviti tudi vsebino za namizje nad seznamom aplikacij. Lahko je samo preprosta slika ali pa je aktivno področje, na primer s seznamom priljubljenih filmov ali, v našem primeru, radijskih postaj.
Mnogi razvijalci šele začenjajo raziskovati možnosti novega tvOS. Dobra novica je, da je pisanje vsebinske aplikacije zelo enostavno in Apple je šel daleč pri razvijalcih s TVML. Izdelava aplikacije (na primer PLAY.CZ ali iVyszílő) mora biti enostavna in hitra. Obstaja velika verjetnost, da bo hkrati z začetkom prodaje novega Apple TV pripravljenih veliko število aplikacij.
Pisanje izvorne aplikacije ali prenos igre iz iOS-a v tvOS bo bolj zahtevno, vendar ne veliko. Največja ovira bodo različne kontrole in omejitev 200 MB na aplikacijo. Domača aplikacija lahko prenese le omejen del podatkov iz trgovine, vse ostalo pa je treba dodatno prenesti in ni nobenega zagotovila, da sistem teh podatkov ne bo izbrisal. Vendar se bodo razvijalci zagotovo hitro spopadli s to omejitvijo, tudi zaradi razpoložljivosti nabora orodij, imenovanih "App Thinning", ki so prav tako del iOS 9.
Lep članek. hvala Morda bomo čez čas pri Applu videli tudi uporabniško rešitev za pripravo enostavnejših aplikacij (rešitev), kot je to mogoče z FileMakerjem za iOS, ne da bi bil jaz razvijalec.
V teoriji ... nalagalnik Swift je nekaj vrstic, ki so še vedno enake, spremeni se le URL za prvo datoteko TVML. Če kdo želi, lahko verjetno napiše skript, ki bi lahko na daljavo zagnal gradnjo z vašim URL-jem in poslal nazaj datoteko IPA. Če pa imate mac, ni problema poslati projekt, kjer samo vnesete URL in začnete z gradnjo. Prednost je v tem, da če je TVML zunaj aplikacije, dejansko potrebujete samo eno javno gradnjo in morda eno zasebno (razvojno) gradnjo, spremenite pa lahko samo TVML na strežniku in s tem delovanje aplikacije.
"Aplikacija je lahko samo za tvOS ali pa se koda doda obstoječi aplikaciji za iOS, da se ustvari aplikacija 'ena velikost za vse' - model, podoben današnjim aplikacijam za iPhone in iPad."
Zanima me, kaj mislite? Osebno nisem nikjer našel načina za izdelavo 1 gradnje, ki bo vključevala univerzalni iPhone, iPad in Apple TV.. ker gre za ločena SDK-ja (podobno OSX), potrebujete dodaten cilj za tvOS in s tem tudi ločeno gradnjo. Kaj pogrešam?
v Xcode 7.1 aplikacije tvOS je mogoče dodati kot drugo tarčo že obstoječemu projektu – podobno kot aplikacije za Apple Watch ali morda widget za center za obveščanje. Ne vem pa še, kako se bo naložilo v trgovino... Predvidevam, da bo Xcode poslal en paket, App Store pa ga bo nato razdelil... Verjetno podobno, kot zdaj počnejo z Watch
noo.. po mojem mnenju sta to 2 popolnoma različni stvari.. watch je razširitev.. ali vsaj do watchOS 2.0 je bila.. bila je dana skupaj z iOS targetom in brez iPhona sploh ni delovala.. ATV je ločena entiteta.. o tem govorim, ali bo izdelava za ATV ločena (plačati morate 2$) in poleg tega iOS plačati 2$, ali bo mogoče podeliti univerzalno Zgradba za 2 $ za iOS in ATV. družina za ATV..
tako se bo pokazal pravi zagon, vendar se v resnici obnaša enako kot na primer koda Apple Watch. Sicer pa v dokumentaciji piše, da bo obstoječi aplikaciji možno dodati kodo za tvOS in tako bo možno prodajati eno aplikacijo (ena entiteta v App Store) za iOS in tvOS hkrati - en nakup za kupca ali kot ločena entiteta - ločen nakup za iOS in za tvOS.
Samo za pojasnitev, ne gre za 200 MB na aplikacijo, ampak 200 MB, shranjenih lokalno, preostanek pa se po potrebi prenese iz omrežja
Hvala, tako sem mislil, ampak verjetno sem se narobe izrazil. Vse nad 200 MB (oz. vse dodatno naloženo) se shrani kot predpomnilnik in če sistem ugotovi, da mu zmanjkuje prostora, ga začne brisati – kar se verjetno ne bo zgodilo, dokler ne bo dovolj prostega prostora in nato najmanj uporabljene vsebine. bo izbrisan, tako da v praksi verjetno ne bo večjih težav.
Kaj še moram ugotoviti, menda ta omejitev ne bo veljala za igre, oz igra bi lahko bila večja od 200 MB neposredno na dnu. Ampak še vedno ne vem točno, kako je to točno mišljeno. Povsem mogoče je, da Apple še vedno prilagaja to politiko glede na povratne informacije razvijalcev.
hehe Pokemon TCG – 4 GB, Order chaos online – 1,6 GB Hearthstone 1,3 GB To me res zanima.
pojavile so se informacije, da imajo igre poseben način. Zdaj sestavljam podrobnosti in bomo dokončali članek.
Ne zmorem in se že vnaprej opravičujem, če bom koga užalil, imam pa le ogromno, iskreno in pristno veselje, ki sem ga želel deliti z vami...
Dan po napovedi novega Apple TV-ja nisem bil len in sem se prijavil na Applovo loterijo (naj izberem?) z možnostjo pridobitve Developer Kit-a še preden gre v prodajo.
Včeraj zvečer mi je Apple napisal, da me je izbral za prvo serijo :)
Torej, nisem isti kot avtor tega članka in pošteno delam na Preschool Brasnicce za Apple TV - na voljo v vaši App Store v oktobru :)
tako da imam občutek, da so verjetno vsi, ki so se prijavili, dobili :) Tudi jaz sem naročila včeraj in se tega zelo zelo veselim... Pa še eno osebo poznam, ki prav tako čaka na dostavo...
Kakorkoli, zaenkrat kaže, da bo verjetno veliko aplikacij, ko se začne prodaja :)
Verjetno ne vsi - meni niso dali :(
:( Žal mi je za vas.
Če kdo želi, imam osem belih Applovih nalepk… Lahko jih pošljem…