Apple je prošle sedmice predstavio, između ostalog novi Apple TV sa tvOS operativnim sistemom. Činjenica da se aplikacije iz App Store-a mogu instalirati u novu crnu kutiju svakako je najviše obradovala programere.
Programeri imaju dvije opcije. Oni mogu napisati izvornu aplikaciju koja ima potpuni pristup Apple TV hardveru. Dostupni SDK (skup biblioteka za programere) je vrlo sličan onome što programeri već znaju sa 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 smatrate da naziv TVML izgleda sumnjivo kao HTML, u pravu ste. To je zaista markup jezik baziran na XML-u i vrlo sličan HTML-u, samo što je mnogo jednostavniji i ima strožiju sintaksu. Ali apsolutno je savršen za aplikacije kao što je Netflix. I korisnici će također imati koristi, jer će strogost TVML-a učiniti da multimedijalne aplikacije izgledaju i rade na isti način.
Put do prve aplikacije
Dakle, prva stvar koju sam morao učiniti je da preuzmem novu beta verziju Xcode razvojnog okruženja (dostupna je verzija 7.1 ovdje). Ovo mi je omogućilo pristup tvOS SDK-u i mogao sam pokrenuti novi projekat 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 iPhone i iPad aplikacijama danas.
Prvi problem: Xcode nudi samo mogućnost kreiranja izvorne aplikacije. Ali vrlo brzo sam pronašao dio u dokumentaciji koji će pomoći programerima promijeniti ovaj kostur i pripremiti ga za TVML. U osnovi, to je nekoliko linija koda u Swiftu koji samo na Apple TV-u kreiraju objekt preko cijelog ekrana i učitavaju glavni dio aplikacije, koji je već napisan u JavaScript-u.
Drugi problem: TVML aplikacije su zaista vrlo slične web stranici, pa se stoga sav kod također učitava s interneta. Sama aplikacija je zapravo samo "bootloader", sadrži samo minimum koda i najosnovnije grafičke elemente (ikona aplikacije i slično). Na kraju sam uspješno stavio glavni JavaScript kod direktno u aplikaciju i dobio mogućnost da barem prikažem prilagođenu poruku o grešci kada Apple TV nije povezan s internetom.
Treći mali problem: iOS 9 i s njim tvOS striktno zahtijevaju da se sva komunikacija prema Internetu odvija šifrovano putem HTTPS-a. Ovo je funkcija uvedena u iOS 9 za sve aplikacije, a razlog je pritisak na privatnost korisnika i sigurnost podataka. Stoga će biti potrebno postaviti SSL certifikat na web server. Može se kupiti za samo 5 dolara (120 kruna) godišnje, ili možete koristiti, na primjer, uslugu CloudFlare, koja će se sama pobrinuti za HTTPS, automatski i bez ulaganja. Druga opcija je da isključite ovo ograničenje za aplikaciju, što je za sada moguće, ali to svakako ne bih preporučio.
Nakon nekoliko sati čitanja dokumentacije, gdje još uvijek ima povremenih manjih grešaka, razradio sam vrlo osnovnu, ali radnu aplikaciju. Prikazivao je popularni tekst "Hello World" i dva dugmeta. Proveo sam oko dva sata pokušavajući da aktiviram dugme i da uradim nešto. Ali s obzirom na rane jutarnje sate, radije sam zaspao... i to je bila dobra stvar.
Neki dan mi je pala na pamet sjajna ideja da preuzmem gotov uzorak TVML aplikacije direktno sa Apple-a. Vrlo brzo sam pronašao ono što sam tražio u kodu i dugme je bilo živo i radilo. Između ostalog, otkrio sam i prva dva dijela tvOS tutorijala na internetu. Oba resursa su puno pomogla, pa sam započeo novi projekat i započeo svoju prvu pravu aplikaciju.
Prva prava aplikacija
Počeo sam potpuno od nule, prve TVML stranice. Prednost je što je Apple pripremio 18 gotovih TVML šablona za programere koje je potrebno samo kopirati iz dokumentacije. Uređivanje jednog šablona trajalo je oko sat vremena, prvenstveno zato što sam pripremao naš API da pošaljem gotov TVML sa svim potrebnim podacima na Apple TV.
Drugi šablon je trajao samo 10 minuta. Dodao sam dva JavaScript-a - većina koda u njima dolazi direktno od Applea, pa zašto ponovo izmišljati točak. Apple je pripremio skripte koje se brinu o učitavanju i prikazivanju TVML šablona, uključujući preporučeni indikator učitavanja sadržaja i prikaz moguće greške.
Za manje od dva sata uspio sam sastaviti vrlo golu, ali funkcionalnu PLAY.CZ aplikaciju. Može prikazati listu radio stanica, može je filtrirati po žanru i može pokrenuti radio. Da, mnoge stvari nisu u aplikaciji, ali osnove rade.
[youtube id=”kLKvWC-rj7Q” width=”620″ visina=”360″]
Prednost je u tome što aplikacija nije ništa drugo do posebna verzija web stranice, koju pokreće JavaScript, a možete koristiti i CSS za promjenu izgleda.
Appleu je potrebno još nekoliko stvari za pripremu. Ikona aplikacije nije jedna, već dvije - manja i veća. Novina je da ikona nije jednostavna slika, već sadrži efekat paralakse i sastoji se od 2 do 5 slojeva (pozadina, objekti u sredini i prednji plan). Sve aktivne slike u aplikaciji mogu sadržavati isti efekat.
Svaki sloj je zapravo samo slika na prozirnoj pozadini. Apple je pripremio vlastitu aplikaciju za kompajliranje ovih slojevitih slika i obećava da će uskoro objaviti dodatak za izvoz za Adobe Photoshop.
Drugi uslov je slika "gornje police". Ako korisnik postavi aplikaciju na istaknuto mjesto u gornjem redu (na gornjoj polici), aplikacija također mora osigurati sadržaj za radnu površinu iznad liste aplikacija. Može biti ili samo obična slika ili može biti aktivna oblast, na primjer sa listom omiljenih filmova ili, u našem slučaju, radio stanicama.
Mnogi programeri tek počinju istraživati mogućnosti novog tvOS-a. Dobra vijest je da je pisanje aplikacije za sadržaj vrlo jednostavno, a Apple je prešao dug put za programere sa TVML-om. Izrada aplikacije (na primjer PLAY.CZ ili iVyszílő) trebala bi biti laka i brza. Velika je šansa da će veliki broj aplikacija biti spreman u isto vrijeme kada novi Apple TV krene u prodaju.
Pisanje izvorne aplikacije ili prijenos igre sa iOS-a na tvOS bit će izazovniji, ali ne mnogo. Najveća prepreka će biti različite kontrole i ograničenje od 200MB po aplikaciji. Native aplikacija može preuzeti samo ograničeni dio podataka iz trgovine, a sve ostalo se mora preuzeti dodatno i nema garancije da sistem neće izbrisati te podatke. 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.
Dobar članak. Hvala. Možda ćemo s vremenom od Apple-a vidjeti i korisničko rješenje za pripremu jednostavnijih aplikacija (rješenja), kao što je to moguće sa FileMakerom za iOS, a da ja nisam programer.
U teoriji... Swift loader je nekoliko redova koji su i dalje isti, samo se URL za prvu TVML datoteku mijenja. Ako neko želi, vjerovatno može napisati skriptu koja bi mogla daljinski pokrenuti gradnju s vašim URL-om i poslati natrag IPA fajl. Ili ako imate Mac, nije problem poslati projekat, gdje samo stavite URL i započnete build. Prednost je u tome što ako je TVML izvan aplikacije, zapravo vam je potrebna samo jedna javna gradnja i eventualno jedna privatna (razvojna) verzija, a možete promijeniti samo TVML na serveru i time funkcioniranje aplikacije.
"Aplikacija može biti samo za tvOS ili se kod može dodati postojećoj iOS aplikaciji kako bi se stvorila aplikacija 'jedna veličina za sve' - model sličan iPhone i iPad aplikacijama danas."
Pitam se na šta misliš? Lično, nigdje nisam našao način da napravim 1 build koji će uključivati univerzalni iPhone, iPad i Apple TV.. budući da su to zasebni SDK-ovi (slično OSX-u), potrebna vam je dodatna meta za tvOS, a time i zasebna verzija. Nešto mi nedostaje?
u Xcode 7.1 tvOS aplikacije se mogu dodati kao još jedna meta već postojećem projektu - slično aplikacijama za Apple Watch ili možda widget za centar za obavijesti. Međutim, još ne znam kako će biti postavljen u prodavnicu... Pretpostavljam da će Xcode poslati jedan paket i App Store će ga onda podijeliti... Vjerovatno slično kao što sada rade sa Watchom
neee.. po mom misljenju to su 2 potpuno razlicite stvari.. sat je ekstenzija.. ili je barem bio do watchOS 2.0.. dat je zajedno sa iOS metom i nije radio ni bez iPhonea.. ATV je zasebna cjelina.. o tome ja pricam, da li ce build za ATV biti odvojen (treba platiti 2$) i uz to iOS placen 2$, ili ce biti moguce dati univerzalni 2$ build i za iOS i za ATV.. onda mislim da ne, jer čak ni iOS cilj ne nudi porodicu uređaja za ATV..
tako da će se pokazati pravo lansiranje, ali se zaista ponaša isto kao kod Apple Watcha, na primjer. Inače, u dokumentaciji se navodi da će postojećoj aplikaciji biti moguće dodati kod za tvOS i na taj način će biti moguće prodati jednu aplikaciju (jedan entitet u App Store-u) za iOS i tvOS istovremeno - jednu kupovinu za kupca, ili kao poseban entitet - zasebna kupovina za iOS i za tvOS.
Samo da pojasnim, to nije 200MB po aplikaciji, već 200MB pohranjeno lokalno, a ostatak se preuzima s neta po potrebi
Hvala, to sam i mislio, ali verovatno sam pogrešno formulisao. Sve iznad 200MB (ili sve dodatno preuzeto) se pohranjuje kao keš memorija i ako sistem odluči da mu ponestaje prostora, počinje da ga briše - što se vjerovatno neće dogoditi dok ne bude dovoljno slobodnog prostora, a zatim i najmanje korištenog sadržaja će biti obrisan, tako da to u praksi vjerovatno neće predstavljati veliki problem.
Šta još moram saznati, navodno ovo ograničenje neće važiti za igre, ili igra bi mogla biti veća od 200MB u bazi. Ali još uvek ne znam tačno kako se to tačno misli. Sasvim je moguće da Apple još uvijek prilagođava ovu politiku prema povratnim informacijama programera.
hehe Pokemon TCG – 4 GB, Naruči haos online – 1,6 GB Hearthstone 1,3 GB Zaista me zanima ovo.
bilo je informacija da igre imaju poseban mod. Sada sastavljam detalje i dovršit ćemo članak.
Ja to ne mogu, i unapred se izvinjavam ako sam nekoga uvredio, ali imam ogromnu, iskrenu i nepatvorenu radost koju sam hteo da podelim sa vama...
Dan nakon najave novog Apple TV-a nisam bio lijen i prijavio sam se na Apple lutriju (da li da biram?) uz mogućnost da nabavim Developer Kit i prije nego što krene u prodaju.
Juče uveče mi je Apple napisao da me je odabrao za prvu seriju :)
Dakle, nisam isto što i autor ovog članka, i iskreno radim na Preschool Brasnicce za Apple TV - dostupno u vašoj App Store tokom oktobra :)
tako da imam osjecaj da su svi koji su se registrovali vjerovatno dobili :) I ja sam juce porucila i jako, jako se radujem... A znam jos jednu osobu koja takodje ceka svoju isporuku...
U svakom slučaju, zasad se čini da će vjerovatno biti puno aplikacija kada počne prodaja :)
Verovatno svi nemaju - meni nisu dali :(
:( Žao mi je zbog tebe.
Ako neko želi, imam osam bijelih Apple naljepnica… Mogu ih poslati poštom…