Apple je prošlog tjedna između ostalog predstavio novi Apple TV s operativnim sustavom tvOS. Programere je svakako najviše razveselila činjenica da se u novu crnu kutiju mogu instalirati aplikacije iz App Storea.
Programeri imaju dvije mogućnosti. Oni mogu napisati izvornu aplikaciju koja ima puni pristup hardveru Apple TV-a. Dostupni SDK (skup knjižnica za programere) vrlo je sličan onome što programeri već poznaju s iPhonea, iPada, a programski jezici su isti - Objective-C i mlađi Swift.
Ali za jednostavnije aplikacije, Apple je programerima ponudio drugu opciju u obliku TVML - Television Markup Language. Ako vam se čini da naziv TVML izgleda sumnjivo kao HTML, u pravu ste. To je zapravo označni jezik temeljen na XML-u i vrlo sličan HTML-u, samo što je mnogo jednostavniji i ima strožu sintaksu. Ali apsolutno je savršen za aplikacije poput Netflixa. I korisnici će također imati koristi jer će strogost TVML-a učiniti da multimedijske aplikacije izgledaju i rade jednako.
Put do prve aplikacije
Prvo što sam morao učiniti bilo je preuzeti novu beta verziju Xcode razvojnog okruženja (dostupna je verzija 7.1 ovdje). To mi je dalo pristup tvOS SDK-u i mogao sam započeti novi projekt koji je posebno usmjeren na četvrtu generaciju Apple TV-a. Aplikacija može biti samo za tvOS ili se kod može dodati postojećoj iOS aplikaciji kako bi se stvorila "univerzalna" aplikacija - model sličan današnjim iPhone i iPad aplikacijama.
Prvi problem: Xcode nudi samo mogućnost stvaranja izvorne aplikacije. Ali vrlo brzo sam pronašao odjeljak u dokumentaciji koji će programerima pomoći promijeniti ovaj kostur i pripremiti ga za TVML. U osnovi, to je nekoliko redaka koda u Swiftu koji, samo na Apple TV-u, stvara objekt preko cijelog zaslona i učitava glavni dio aplikacije, koji je već napisan u JavaScriptu.
Drugi problem: TVML aplikacije su stvarno vrlo slične web stranici, pa se stoga sav kod također učitava s Interneta. Sama aplikacija zapravo je samo "bootloader", sadrži samo minimum koda i najosnovnije grafičke elemente (ikona aplikacije i slično). Na kraju sam uspješno postavio glavni JavaScript kôd izravno u aplikaciju i dobio mogućnost barem prikazivanja prilagođene poruke o pogrešci kada Apple TV nije spojen na internet.
Treći mali problem: iOS 9 i s njim tvOS striktno zahtijevaju da se sva komunikacija prema internetu odvija kriptirano putem HTTPS-a. Ovo je značajka uvedena u iOS 9 za sve aplikacije, a razlog je pritisak na privatnost korisnika i sigurnost podataka. Stoga će biti potrebno implementirati SSL certifikat na web poslužitelju. Može se kupiti već od 5 dolara (120 kruna) godišnje ili možete koristiti npr. uslugu CloudFlare koja će se sama pobrinuti za HTTPS, automatski i bez ulaganja. Druga opcija je isključiti ovo ograničenje za aplikaciju, što je za sada moguće, ali nikako ne bih preporučio.
Nakon nekoliko sati čitanja dokumentacije, gdje još uvijek ima povremenih manjih grešaka, razradio sam vrlo osnovnu, ali funkcionalnu aplikaciju. Prikazivao je popularni tekst "Hello World" i dva gumba. Proveo sam oko dva sata pokušavajući aktivirati gumb i učiniti nešto. Ali s obzirom na rane jutarnje sate, radije sam otišao spavati... i to je bila dobra stvar.
Prije neki dan, sinula mi je pametna ideja preuzeti gotov primjer TVML aplikacije izravno s Applea. U kodu sam vrlo brzo pronašao ono što sam tražio i gumb je bio živ i radio. Između ostalog, na internetu sam otkrio i prva dva dijela tvOS tutoriala. Oba su resursa puno pomogla, pa sam pokrenuo novi projekt i pokrenuo svoju prvu pravu aplikaciju.
Prva prava primjena
Krenuo sam potpuno od nule, prva TVML stranica. Prednost je što je Apple za developere pripremio 18 gotovih TVML predložaka koje samo treba kopirati iz dokumentacije. Uređivanje jednog predloška trajalo je oko sat vremena, prvenstveno jer sam pripremao naš API da pošalje gotov TVML sa svim potrebnim podacima na Apple TV.
Drugi predložak je trajao samo 10 minuta. Dodao sam dva JavaScripta - većina koda u njima dolazi izravno od Applea, pa zašto ponovno izumiti kotač. Apple je pripremio skripte koje se brinu za učitavanje i prikaz TVML predložaka, uključujući preporučeni indikator učitavanja sadržaja i prikaz mogućih grešaka.
U manje od dva sata uspio sam sastaviti vrlo golu, ali funkcionalnu PLAY.CZ aplikaciju. Može prikazati popis radio postaja, može ga filtrirati po žanru i može pokrenuti radio. Da, mnogo toga nije u aplikaciji, ali osnove funkcioniraju.
[youtube id=”kLKvWC-rj7Q” width=”620″ height=”360″]
Prednost je u tome što aplikacija u osnovi nije ništa više od posebne verzije web stranice koju pokreće JavaScript, a možete koristiti i CSS za izmjenu izgleda.
Apple još uvijek treba pripremiti još nekoliko stvari. Ikona aplikacije nije jedna, već dvije - manja i veća. Novost je što ikona nije jednostavna slika, već sadrži efekt paralakse i sastoji se od 2 do 5 slojeva (pozadina, objekti u sredini i prednjem planu). Sve aktivne slike u aplikaciji mogu sadržavati isti učinak.
Svaki sloj je zapravo samo slika na prozirnoj pozadini. Apple je pripremio vlastitu aplikaciju za sastavljanje ovih slojevitih slika i obećava da će uskoro objaviti dodatak za izvoz za Adobe Photoshop.
Još jedan uvjet je slika "Top Shelf". Ako korisnik postavi aplikaciju na istaknuto mjesto u gornjem redu (na gornjoj polici), aplikacija također mora pružiti sadržaj za radnu površinu iznad popisa aplikacija. Može postojati samo jednostavna slika ili može biti aktivno područje, na primjer s popisom omiljenih filmova ili, u našem slučaju, radio postaja.
Mnogi programeri tek počinju istraživati mogućnosti novog tvOS-a. Dobra vijest je da je pisanje aplikacije sa sadržajem vrlo jednostavno, a Apple je otišao daleko za programere s TVML-om. Izrada aplikacije (na primjer PLAY.CZ ili iVyszílő) trebala bi biti jednostavna i brza. Postoji velika vjerojatnost da će velik broj aplikacija biti spreman u isto vrijeme kada novi Apple TV krene u prodaju.
Pisanje izvorne aplikacije ili prijenos igre s iOS-a na tvOS bit će izazovniji, ali ne mnogo. Najveća prepreka bit će različite kontrole i ograničenje od 200 MB po aplikaciji. Nativna aplikacija može preuzeti samo ograničeni dio podataka iz trgovine, a sve ostalo potrebno je dodatno preuzeti i nema garancije da sustav te podatke neće izbrisati. Međutim, programeri će se sigurno brzo nositi s ovim ograničenjem, također zahvaljujući dostupnosti skupa alata pod nazivom "App Thinning", koji su također dio iOS-a 9.
Lijep članak. Hvala. Možda ćemo s vremenom od Applea vidjeti i korisničko rješenje za pripremu jednostavnijih aplikacija (rješenja), kao što je moguće s FileMakerom za iOS, a da ja nisam programer.
U teoriji… Swift loader sastoji se od nekoliko redaka koji su i dalje isti, samo se mijenja URL za prvu TVML datoteku. Ako netko želi, vjerojatno može napisati skriptu koja bi mogla daljinski pokrenuti izgradnju s vašim URL-om i poslati natrag IPA datoteku. Ili ako imate mac, nije problem poslati projekt, gdje samo stavite URL i započnete izgradnju. Prednost je u tome što ako je TVML izvan aplikacije, zapravo vam je potrebna samo jedna javna izgradnja i eventualno jedna privatna (razvojna) izrada, a možete promijeniti samo TVML na poslužitelju, a time i funkcioniranje aplikacije.
"Aplikacija može biti samo za tvOS ili se kod može dodati postojećoj iOS aplikaciji kako bi se stvorila 'jedna veličina za sve' aplikacija - model sličan današnjim iPhone i iPad aplikacijama."
Pitam se na što misliš? Osobno nisam nigdje pronašao način da napravim 1 međugradnju koja će uključivati univerzalni iPhone, iPad i Apple TV.. budući da su oni zasebni SDK-ovi (slično OSX-u), potreban vam je dodatni cilj za tvOS, a time i zasebna verzija. Nešto mi nedostaje?
u Xcode 7.1 tvOS aplikacije mogu se dodati kao još jedan cilj već postojećem projektu – slično aplikacijama za Apple Watch ili možda widgetu za centar za obavijesti. Međutim, još ne znam kako će se uploadati u trgovinu... Pretpostavljam da će Xcode poslati jedan paket, a App Store će ga potom podijeliti... Vjerojatno slično onome što sada rade sa Watchom
nee.. po meni su to 2 potpuno različite stvari.. watch je ekstenzija.. ili je barem tako bilo do watchOS 2.0.. dano je zajedno s iOS targetom i nije radilo ni bez iPhonea.. ATV je zasebna cjelina.. o tome govorim, hoće li verzija za ATV biti zasebna (morate platiti 2$) i uz to iOS koji se plaća 2$, ili će biti moguće dodijeliti univerzalni 2$ verzija za iOS i ATV. obitelj za ATV..
tako da će se pokazati stvarno pokretanje, ali stvarno se ponaša isto kao kod Apple Watcha, na primjer. Inače, u dokumentaciji stoji da će biti moguće dodati kod za tvOS na postojeću aplikaciju te će tako biti moguće prodavati jednu aplikaciju (jedan entitet u App Storeu) i za iOS i za tvOS istovremeno - jedna kupnja za kupca, ili kao zasebna cjelina - zasebna kupnja za iOS i za tvOS.
Samo da pojasnimo, nije 200 MB po aplikaciji, već 200 MB pohranjeno lokalno, a ostatak se po potrebi preuzima s mreže
Hvala, tako sam i mislio, ali vjerojatno sam se krivo izrazio. Sve iznad 200 MB (ili sve dodatno preuzeto) pohranjuje se kao cache i ako sustav odluči da mu ponestaje prostora, počinje brisati – što se vjerojatno neće dogoditi dok ne bude dovoljno slobodnog prostora, a zatim najmanje korištenog sadržaja će se izbrisati, tako da u praksi to vjerojatno neće biti veliki problem.
Što još moram saznati, navodno ovo ograničenje neće vrijediti za igre, odn igra bi mogla biti veća od 200 MB u samoj bazi. Ali još uvijek ne znam točno kako se to točno misli. Vrlo je moguće da Apple još uvijek prilagođava ovu politiku prema povratnim informacijama programera.
hehe Pokemon TCG – 4 GB, Order chaos online – 1,6 GB Hearthstone 1,3 GB Stvarno me zanima ovo.
pojavile su se informacije da igre imaju poseban mod. Sada slažem detalje i dovršit ćemo članak.
Ja to ne mogu i unaprijed se ispričavam ako ću nekoga uvrijediti, ali imam jedno ogromno, iskreno i istinsko veselje koje sam htjela podijeliti s vama...
Dan nakon najave novog Apple TV-a nisam bio lijen i prijavio sam se na Appleovu lutriju (da biram?) s mogućnošću dobivanja Developer Kit-a i prije izlaska u prodaju.
Jučer navečer mi je Apple napisao da me odabrao za prvu seriju :)
Dakle, ja nisam isti kao autor ovog članka, i iskreno radim na Preschool Brasnicce za Apple TV - dostupan u vašem App Storeu tijekom listopada :)
pa imam osjecaj da su svi koji su se registrirali vjerojatno i dobili :) I ja sam jucer narucivala i jako, jako se veselim... A znam jos jednu osobu koja isto ceka dostavu...
U svakom slučaju, zasad se čini da će vjerojatno biti puno aplikacija kada krene prodaja :)
Vjerojatno ne svi - nisu mi dali :(
:( Žao mi je zbog tebe.
Ako netko želi, imam osam bijelih Apple naljepnica… mogu ih poslati poštom…