„Apple“ praėjusią savaitę pristatė, be kita ko naujasis Apple TV su tvOS operacine sistema. Tai, kad naujoje juodojoje dėžutėje galima įdiegti programas iš App Store, kūrėjus tikrai nudžiugino labiausiai.
Kūrėjai turi dvi galimybes. Jie gali parašyti vietinę programą, turinčią visišką prieigą prie „Apple TV“ aparatinės įrangos. Galimas SDK (bibliotekų rinkinys kūrėjams) yra labai panašus į tai, ką kūrėjai jau žino iš „iPhone“, „iPad“, o programavimo kalbos yra tos pačios - „Objective-C“ ir jaunesnė „Swift“.
Tačiau paprastesnėms programoms Apple pasiūlė kūrėjams antrą variantą TVML forma – Television Markup Language. Jei manote, kad pavadinimas TVML įtartinai panašus į HTML, esate teisus. Tai tikrai XML pagrindu sukurta žymėjimo kalba ir labai panaši į HTML, tik ji daug paprastesnė ir griežtesne sintaksė. Tačiau jis puikiai tinka tokioms programoms kaip „Netflix“. Naudinga bus ir vartotojams, nes TVML griežtumas leis, kad daugialypės terpės programos atrodys ir veiks vienodai.
Kelias į pirmąją programą
Taigi pirmas dalykas, kurį turėjau padaryti, buvo atsisiųsti naują Xcode kūrimo aplinkos beta versiją (galima 7.1 versija čia). Tai suteikė man prieigą prie tvOS SDK ir galėjau pradėti naują projektą, specialiai skirtą ketvirtos kartos Apple TV. Programa gali būti skirta tik „tvOS“ arba kodas gali būti pridėtas prie esamos „iOS“ programos, kad būtų sukurta „universali“ programa – modelis, panašus į „iPhone“ ir „iPad“ programas šiandien.
Viena problema: „Xcode“ siūlo tik galimybę sukurti vietinę programą. Bet labai greitai dokumentacijoje radau skyrių, kuris padės kūrėjams pakeisti šį skeletą ir paruošti jį TVML. Iš esmės tai yra kelios „Swift“ kodo eilutės, kurios tiesiog „Apple TV“ sukuria viso ekrano objektą ir įkelia pagrindinę programėlės dalį, kuri jau parašyta „JavaScript“.
Antra problema: TVML programos tikrai labai panašios į tinklalapį, todėl visas kodas taip pat įkeliamas iš interneto. Pati programa iš tikrųjų yra tik „bootloader“, joje yra tik minimalus kodas ir pagrindiniai grafiniai elementai (aplikacijos piktograma ir panašiai). Galiausiai sėkmingai įdėjau pagrindinį JavaScript kodą tiesiai į programėlę ir gavau galimybę bent jau rodyti pasirinktinį klaidos pranešimą, kai Apple TV neprisijungęs prie interneto.
Trečia maža problema: iOS 9 ir kartu su ja tvOS griežtai reikalauja, kad visas bendravimas į internetą vyktų užšifruotas per HTTPS. Ši funkcija įdiegta „iOS 9“ visoms programoms, o priežastis yra spaudimas vartotojų privatumui ir duomenų saugumui. Taigi žiniatinklio serveryje reikės įdiegti SSL sertifikatą. Jį galima įsigyti vos už 5 USD (120 kronų) per metus arba galima pasinaudoti, pavyzdžiui, „CloudFlare“ paslauga, kuri pati, automatiškai ir be investicijų pasirūpins HTTPS. Antras variantas – išjungti šį apribojimą aplikacijai, tai kol kas galima, bet tikrai nerekomenduočiau.
Po kelių valandų perskaičiusi dokumentaciją, kur vis dar pasitaiko nedidelių klaidų, parengiau labai paprastą, bet veikiančią programą. Jame buvo rodomas populiarus tekstas „Hello World“ ir du mygtukai. Aš praleidau maždaug dvi valandas bandydamas įjungti mygtuką ir iš tikrųjų ką nors padaryti. Tačiau atsižvelgiant į ankstyvas ryto valandas, aš mieliau eidavau miegoti... ir tai buvo geras dalykas.
Kitą dieną man kilo mintis atsisiųsti paruoštą TVML programos pavyzdį tiesiai iš Apple. Kode labai greitai radau tai, ko ieškojau, mygtukas veikė ir veikė. Be kita ko, internete atradau ir pirmąsias dvi tvOS pamokos dalis. Abu ištekliai labai padėjo, todėl pradėjau naują projektą ir pradėjau savo pirmąją realią paraišką.
Pirmas tikras pritaikymas
Pradėjau visiškai nuo nulio, pirmojo TVML puslapio. Privalumas tas, kad Apple kūrėjams paruošė 18 paruoštų TVML šablonų, kuriuos tereikia nukopijuoti iš dokumentacijos. Vieno šablono redagavimas užtruko apie valandą, visų pirma todėl, kad ruošiau mūsų API išsiųsti gatavą TVML su visais reikalingais duomenimis į Apple TV.
Antrasis šablonas užtruko tik apie 10 minučių. Pridėjau du „JavaScript“ – didžioji dalis juose esančio kodo ateina tiesiai iš „Apple“, tad kam išradinėti dviratį iš naujo. „Apple“ parengė scenarijus, kurie rūpinasi TVML šablonų įkėlimu ir rodymu, įskaitant rekomenduojamą turinio įkėlimo indikatorių ir galimų klaidų rodymą.
Per mažiau nei dvi valandas man pavyko sukurti labai pliką, bet veikiančią PLAY.CZ programą. Jis gali rodyti radijo stočių sąrašą, filtruoti jį pagal žanrą ir paleisti radiją. Taip, daug dalykų nėra programoje, bet pagrindai veikia.
[youtube id=”kLKvWC-rj7Q” width=”620″ height=”360″]
Privalumas yra tas, kad programa iš esmės yra ne kas kita, kaip speciali svetainės versija, kurią palaiko JavaScript, o išvaizdai pakeisti galite naudoti CSS.
„Apple“ vis dar turi paruošti dar keletą dalykų. Programos piktograma yra ne viena, o dvi – mažesnė ir didesnė. Naujovė yra ta, kad piktograma nėra paprastas vaizdas, bet turi paralakso efektą ir yra sudarytas iš 2–5 sluoksnių (fonas, objektai viduryje ir priekiniame plane). Visi aktyvūs vaizdai visoje programoje gali turėti tą patį efektą.
Kiekvienas sluoksnis iš tikrųjų yra tik vaizdas skaidriame fone. „Apple“ parengė savo programą šiems sluoksniuotiems vaizdams kompiliuoti ir netrukus žada išleisti „Adobe Photoshop“ eksporto papildinį.
Kitas reikalavimas – „Viršutinės lentynos“ vaizdas. Jei naudotojas pateikia programą gerai matomoje vietoje viršutinėje eilutėje (viršutinėje lentynoje), programa taip pat turi pateikti turinį darbalaukiui virš programų sąrašo. Gali būti arba tik paprastas paveikslėlis, arba tai gali būti aktyvi sritis, pavyzdžiui, su mėgstamų filmų sąrašu arba, mūsų atveju, radijo stotys.
Daugelis kūrėjų tik pradeda tyrinėti naujosios tvOS galimybes. Geros naujienos yra tai, kad turinio programėlę parašyti labai paprasta, o „Apple“ nuėjo ilgą kelią TVML kūrėjams. Programos kūrimas (pvz., PLAY.CZ arba iVyszílő) turėtų būti lengvas ir greitas. Yra didelė tikimybė, kad daug programų bus paruošta tuo pačiu metu, kai naujasis Apple TV bus parduodamas.
Rašyti savo programą arba perkelti žaidimą iš iOS į tvOS bus sudėtingiau, bet ne per daug. Didžiausia kliūtis bus skirtingi valdikliai ir 200 MB vienos programos apribojimas. Natūrali programa iš parduotuvės gali atsisiųsti tik ribotą duomenų dalį, o visa kita turi būti atsisiunčiama papildomai, ir nėra garantijos, kad sistema šių duomenų neištrins. Tačiau kūrėjai neabejotinai greitai susidoros su šiuo apribojimu, taip pat dėl to, kad yra įrankių rinkinio, vadinamo „App Thinning“, kurie taip pat yra „iOS 9“ dalis.
Puikus straipsnis. Dėkoju. Galbūt su laiku iš Apple pamatysime ir vartotojo sprendimą paprastesnėms programoms (sprendimams) paruošti, kaip tai įmanoma naudojant FileMaker for iOS, man nebūnant kūrėju.
Teoriškai… „Swift“ įkroviklis yra kelios eilutės, kurios vis dar yra tos pačios, keičiasi tik pirmojo TVML failo URL. Jei kas nors nori, tikriausiai gali parašyti scenarijų, kuris galėtų nuotoliniu būdu paleisti kūrimą su jūsų URL ir atsiųsti IPA failą. Arba jei turite „Mac“, nėra problemų išsiųsti projektą, kuriame tiesiog įdedate URL ir pradedate kurti. Privalumas yra tas, kad jei TVML yra už programos ribų, jums iš tikrųjų reikia tik vienos viešosios versijos ir galbūt vienos privačios (kūrimo) versijos, o TVML galite pakeisti tik serveryje, taigi ir programos veikimą.
„Programėlė gali būti skirta tik „tvOS“ arba kodas gali būti pridėtas prie esamos „iOS“ programos, kad būtų sukurta „vieno dydžio“ programėlė – modelis, panašus į šiandienines „iPhone“ ir „iPad“ programas.
Įdomu, ką tu turi omenyje? Asmeniškai aš niekur neradau būdo sukurti 1 versiją, į kurią būtų įtrauktas universalus iPhone, iPad ir Apple TV.. kadangi jie yra atskiri SDK (panašūs į OSX), jums reikia papildomo tvOS taikinio, taigi ir atskiros versijos. Man kažko trūksta?
„Xcode 7.1“ tvOS programos gali būti įtrauktos kaip kitas tikslas prie jau esamo projekto – panašiai kaip „Apple Watch“ programas arba galbūt pranešimų centro valdiklį. Tačiau dar nežinau kaip bus įkeltas į parduotuvę... Darau prielaidą, kad Xcode atsiųs vieną paketą, o App Store paskui padalins... Turbūt panašiai, kaip dabar daro su Watch
neee.. mano nuomone tai 2 visiskai skirtingi dalykai.. laikrodis yra praplėtimas.. ar bent jau buvo iki watchOS 2.0.. buvo duotas kartu su iOS target ir net neveikė be iPhone.. Keturratis yra atskiras subjektas.. apie tai as ir kalbu , ar bus atskiras keturračio statymas (reikia mokėti 2$) ir papildomai iOS mokėjo 2$, ar bus galima duoti universalų 2 USD versija, skirta „iOS“ ir „ATV“ šeimai, skirta ATV.
Taigi tikrasis paleidimas bus rodomas, bet jis tikrai elgiasi taip pat, kaip, pavyzdžiui, Apple Watch kodas. Kitu atveju dokumentacijoje nurodyta, kad prie esamos aplikacijos bus galima pridėti tvOS kodą ir tokiu būdu bus galima vienu metu parduoti vieną programėlę (vieną subjektą App Store) tiek iOS, tiek tvOS – vieną pirkinį už klientas arba kaip atskiras subjektas – atskiras pirkinys iOS ir tvOS.
Kad būtų paaiškinta, tai ne 200 MB vienai programai, o 200 MB saugoma vietoje, o likusi dalis atsisiunčiama iš tinklo, kai reikia
Ačiū, aš taip ir galvojau, bet tikriausiai neteisingai suformulavau. Viskas, kas viršija 200 MB (arba viskas, kas papildomai atsisiųsta) yra saugoma kaip talpykla ir, jei sistema nusprendžia, kad jai pritrūksta vietos, ji pradeda trinti – kas tikriausiai neįvyks, kol neužteks laisvos vietos ir tada mažiausiai naudojamo turinio bus ištrintas, todėl praktiškai tai tikriausiai nesukels didelių problemų.
Ką dar turiu išsiaiškinti, neva šis limitas žaidimams nebus taikomas, arba žaidimas gali būti didesnis nei 200 MB pačioje bazėje. Bet aš vis dar tiksliai nežinau, kaip tai tiksliai reiškia. Visai įmanoma, kad „Apple“ vis dar koreguoja šią politiką pagal kūrėjų atsiliepimus.
hehe Pokemon TCG – 4 GB, Užsisakykite chaosą internetu – 1,6 GB Hearthstone 1,3 GB Man tai tikrai įdomu.
buvo informacijos, kad žaidimai turi specialų režimą. Dabar dedu detales ir užbaigsime straipsnį.
Aš negaliu to padaryti ir iš anksto atsiprašau, jei ką nors įžeidžiau, bet turiu didžiulį, nuoširdų ir nuoširdų džiaugsmą, kuriuo norėjau su jumis pasidalinti...
Kitą dieną po naujojo Apple TV paskelbimo nepatingėjau ir užsiregistravau Apple loterijoje (ar rinksiuosi?) su galimybe gauti Developer Kit dar prieš jam pasirodant.
Vakar vakare Apple man parašė, kad pasirinko mane pirmai partijai :)
Taigi, aš nesu tas pats, kas šio straipsnio autorius, ir nuoširdžiai dirbu su „Preschool Brasnicce“, skirta „Apple TV“ – spalio mėn. pasiekiama jūsų „App Store“ :)
todėl turiu nuojautą, kad visi užsiregistravę turbūt gavo :) Aš irgi vakar užsisakiau ir labai labai laukiu... Ir dar pažįstu vieną žmogų, kuris taip pat laukia jo pristatymo...
Šiaip kol kas atrodo, kad prasidėjus išpardavimams programėlių tikriausiai bus daug :)
Tikriausiai visi ne - man nedavė :(
:( Man gaila tavęs.
Jei kas norėtų, turiu aštuonis baltus obuolių lipdukus... Galiu išsiųsti paštu...