Apple presenteerde vorige week onder meer de nieuwe AppleTV met het tvOS-besturingssysteem. Het feit dat applicaties uit de App Store in de nieuwe black box geïnstalleerd kunnen worden, stemde de ontwikkelaars in ieder geval het meest tevreden.
Ontwikkelaars hebben twee opties. Ze kunnen een native app schrijven die volledige toegang heeft tot de Apple TV-hardware. De beschikbare SDK (set bibliotheken voor ontwikkelaars) lijkt sterk op wat ontwikkelaars al kennen van de iPhone, iPad, en de programmeertalen zijn hetzelfde: Objective-C en de jongere Swift.
Maar voor eenvoudigere toepassingen bood Apple ontwikkelaars een tweede optie in de vorm van TVML - Television Markup Language. Als u vindt dat de naam TVML verdacht veel op HTML lijkt, heeft u gelijk. Het is eigenlijk een opmaaktaal gebaseerd op XML en lijkt erg op HTML, alleen is het veel eenvoudiger en heeft het een strengere syntaxis. Maar het is absoluut perfect voor toepassingen zoals Netflix. En gebruikers zullen er ook van profiteren, omdat de striktheid van TVML ervoor zorgt dat multimediatoepassingen er vrijwel hetzelfde uitzien en werken.
Pad naar de eerste toepassing
Dus het eerste wat ik moest doen was de nieuwe bètaversie van de Xcode-ontwikkelomgeving downloaden (versie 7.1 is beschikbaar hier). Hierdoor kreeg ik toegang tot de tvOS SDK en kon ik een nieuw project starten dat specifiek gericht was op de vierde generatie Apple TV. De app kan alleen voor tvOS zijn, of de code kan worden toegevoegd aan een bestaande iOS-app om een ‘universele’ app te creëren – een model vergelijkbaar met de huidige iPhone- en iPad-apps.
Probleem één: Xcode biedt alleen de mogelijkheid om een native app te maken. Maar ik vond al snel een sectie in de documentatie die ontwikkelaars zal helpen dit skelet te veranderen en voor te bereiden op TVML. Kortom, het zijn een paar regels code in Swift die, gewoon op de Apple TV, een object op volledig scherm maken en het hoofdgedeelte van de app laden, dat al in JavaScript is geschreven.
Probleem twee: TVML-applicaties lijken eigenlijk heel erg op een webpagina en daarom wordt alle code ook van internet geladen. De applicatie zelf is eigenlijk slechts een "bootloader", deze bevat slechts een minimum aan code en de meest elementaire grafische elementen (applicatiepictogram en dergelijke). Uiteindelijk heb ik met succes de belangrijkste JavaScript-code rechtstreeks in de app geplaatst en kreeg ik de mogelijkheid om op zijn minst een aangepaste foutmelding weer te geven wanneer de Apple TV geen verbinding met internet heeft.
Het derde kleine probleem: iOS 9 en daarmee tvOS vereisen strikt dat alle communicatie naar het internet versleuteld via HTTPS plaatsvindt. Dit is een functie die in iOS 9 voor alle apps is geïntroduceerd en de reden is de druk op de privacy van gebruikers en de gegevensbeveiliging. Het zal dus nodig zijn om een SSL-certificaat op de webserver te implementeren. Het kan worden aangeschaft voor slechts $ 5 (120 kronen) per jaar, of u kunt bijvoorbeeld de CloudFlare-service gebruiken, die zelf voor HTTPS zorgt, automatisch en zonder investeringen. De tweede optie is om deze beperking voor de applicatie uit te schakelen, wat voorlopig mogelijk is, maar ik zou het zeker niet aanbevelen.
Na een paar uur de documentatie gelezen te hebben, waar nog steeds af en toe kleine fouten in voorkomen, heb ik een zeer eenvoudige maar werkende applicatie uitgewerkt. Het toonde de populaire tekst "Hello World" en twee knoppen. Ik heb ongeveer twee uur besteed aan het proberen om de knop actief te krijgen en daadwerkelijk iets te doen. Maar gezien de vroege ochtenduren ging ik liever slapen… en dat was maar goed ook.
Onlangs had ik het lumineuze idee om een kant-en-klaar voorbeeld van een TVML-applicatie rechtstreeks van Apple te downloaden. Ik vond heel snel wat ik zocht in de code en de knop was live en werkte. Ik ontdekte onder meer ook de eerste twee delen van de tvOS-tutorial op internet. Beide bronnen hielpen enorm, dus startte ik een nieuw project en startte mijn eerste echte applicatie.
Eerste echte toepassing
Ik begon helemaal opnieuw, de eerste TVML-pagina. Het voordeel is dat Apple 18 kant-en-klare TVML-sjablonen voor ontwikkelaars heeft voorbereid, die alleen nog maar uit de documentatie hoeven te worden gekopieerd. Het bewerken van één sjabloon duurde ongeveer een uur, vooral omdat ik onze API aan het voorbereiden was om de voltooide TVML met alle benodigde gegevens naar de Apple TV te sturen.
Het tweede sjabloon duurde slechts ongeveer 10 minuten. Ik heb twee JavaScripts toegevoegd. De meeste code daarin komt rechtstreeks van Apple, dus waarom zou je het wiel opnieuw uitvinden? Apple heeft scripts voorbereid die zorgen voor het laden en weergeven van TVML-sjablonen, inclusief de aanbevolen indicator voor het laden van inhoud en mogelijke foutweergave.
In minder dan twee uur kon ik een zeer kale, maar functionerende PLAY.CZ-applicatie in elkaar zetten. Het kan een lijst met radiostations weergeven, het kan filteren op genre en het kan de radio starten. Ja, veel dingen staan niet in de app, maar de basis werkt.
[youtube id=”kLKvWC-rj7Q” breedte=”620″ hoogte=”360″]
Het voordeel is dat de applicatie eigenlijk niets meer is dan een speciale versie van de website, die wordt aangedreven door JavaScript en waarbij je ook CSS kunt gebruiken om het uiterlijk aan te passen.
Apple heeft nog een paar dingen nodig om zich voor te bereiden. Het applicatiepictogram is niet één, maar twee: kleiner en groter. Nieuw is dat het icoon geen simpele afbeelding is, maar een parallaxeffect bevat en is opgebouwd uit 2 tot 5 lagen (achtergrond, objecten in het midden en voorgrond). Alle actieve afbeeldingen in de applicatie kunnen hetzelfde effect hebben.
Elke laag is eigenlijk slechts een afbeelding op een transparante achtergrond. Apple heeft een eigen applicatie voorbereid voor het compileren van deze gelaagde afbeeldingen en belooft binnenkort een exportplug-in voor Adobe Photoshop uit te brengen.
Een andere vereiste is een "Top Shelf" -afbeelding. Als de gebruiker de app op een prominente plek in de bovenste rij (op de bovenste plank) plaatst, moet de app boven de applijst ook content voor de desktop aanbieden. Er kan sprake zijn van een eenvoudig beeld, maar het kan ook een actief gebied zijn, bijvoorbeeld met een lijst met favoriete films of, in ons geval, radiostations.
Veel ontwikkelaars beginnen nog maar net de mogelijkheden van het nieuwe tvOS te verkennen. Het goede nieuws is dat het schrijven van een content-app heel eenvoudig is, en Apple heeft met TVML een lange weg afgelegd voor ontwikkelaars. Het bouwen van een applicatie (bijvoorbeeld PLAY.CZ of iVyszílő) moet gemakkelijk en snel zijn. De kans is groot dat er tegelijkertijd met de verkoop van de nieuwe Apple TV een groot aantal applicaties klaar zullen zijn.
Het schrijven van een native app of het porten van een game van iOS naar tvOS zal een grotere uitdaging zijn, maar niet zozeer. De grootste hindernis zijn verschillende bedieningselementen en een limiet van 200 MB per app. Een native applicatie kan slechts een beperkt deel van de gegevens uit de winkel downloaden, en al het andere moet bovendien worden gedownload, en er is geen garantie dat het systeem deze gegevens niet zal verwijderen. Ontwikkelaars zullen echter zeker snel met deze beperking afrekenen, mede dankzij de beschikbaarheid van een set tools genaamd "App Thinning", die ook deel uitmaken van iOS 9.
Leuk artikel. Bedankt. Misschien zien we op termijn van Apple ook een gebruikersoplossing voor het voorbereiden van eenvoudigere applicaties (oplossingen), zoals mogelijk is met FileMaker voor iOS, zonder dat ik een ontwikkelaar ben.
In theorie... is de Swift-loader een paar regels die nog steeds hetzelfde zijn, alleen de URL voor het eerste TVML-bestand verandert. Als iemand dat wil, kan hij of zij waarschijnlijk een script schrijven waarmee op afstand een build met uw URL kan worden uitgevoerd en een IPA-bestand kan worden teruggestuurd. Of als je een Mac hebt, is het geen probleem om het project te verzenden, waar je gewoon de URL invult en de build start. Het voordeel is dat als de TVML buiten de applicatie staat, je eigenlijk maar één public build en eventueel één private (development) build nodig hebt, en je alleen de TVML op de server en daarmee de werking van de applicatie kunt wijzigen.
"De app kan alleen tvOS zijn, of de code kan worden toegevoegd aan een bestaande iOS-app om een 'one-size-fits-all'-app te creëren - een model vergelijkbaar met de huidige iPhone- en iPad-apps."
Ik vraag me af wat je bedoelt? Persoonlijk heb ik nergens een manier gevonden om 1 build te maken die universele iPhone, iPad en Apple TV omvat. Omdat het aparte SDK's zijn (vergelijkbaar met OSX), heb je een extra target nodig voor tvOS en dus ook een aparte build. Ik mis iets?
in Xcode 7.1 kunnen tvOS-applicaties als een ander doel worden toegevoegd aan een reeds bestaand project - vergelijkbaar met applicaties voor de Apple Watch of misschien een widget voor het meldingscentrum. Ik weet echter nog niet hoe het naar de winkel zal worden geüpload... Ik ga ervan uit dat Xcode één pakket zal verzenden en dat de App Store het vervolgens zal verdelen... Waarschijnlijk vergelijkbaar met wat ze nu met de Watch doen
nee.. naar mijn mening zijn dit 2 totaal verschillende dingen.. watch is een extensie.. of dat was het tenminste tot watchOS 2.0.. het werd samen met het iOS-doel gegeven en werkte niet eens zonder iPhone.. ATV is een aparte entiteit.. daar heb ik het over, of de build voor ATV apart zal zijn (je moet voor 2 $ betalen) en daarnaast iOS voor 2 $ betaald, of zal het mogelijk zijn om een universele 2$ build voor zowel iOS als ATV. familie voor ATV..
dus de echte lancering zal blijken, maar deze gedraagt zich in werkelijkheid hetzelfde als bijvoorbeeld de Apple Watch-code. Anders vermeldt de documentatie dat het mogelijk zal zijn om code voor tvOS aan de bestaande applicatie toe te voegen en het dus mogelijk zal zijn om één app (één entiteit in de App Store) tegelijkertijd voor zowel iOS als tvOS te verkopen - één aankoop voor de klant, of als afzonderlijke entiteit - een afzonderlijke aankoop voor iOS en voor tvOS.
Voor alle duidelijkheid: het is niet 200 MB per app, maar 200 MB lokaal opgeslagen en de rest gedownload van internet wanneer dat nodig is
Bedankt, dat dacht ik al, maar ik heb het waarschijnlijk verkeerd verwoord. Alles boven de 200 MB (of alles wat extra wordt gedownload) wordt opgeslagen als cache en als het systeem besluit dat er onvoldoende ruimte is, begint het het te verwijderen - wat waarschijnlijk niet zal gebeuren totdat er voldoende vrije ruimte is en vervolgens de minst gebruikte inhoud zal worden verwijderd, dus in de praktijk zal het waarschijnlijk geen groot probleem zijn.
Wat ik nog meer moet weten, is dat deze limiet vermoedelijk niet van toepassing is op games, of het spel zou in de basis groter kunnen zijn dan 200 MB. Maar ik weet nog steeds niet precies hoe dit precies bedoeld wordt. Het is goed mogelijk dat Apple dit beleid nog aan het aanpassen is op basis van feedback van ontwikkelaars.
hehe Pokemon TCG – 4 GB, Chaos online bestellen – 1,6 GB Hearthstone 1,3 GB Ik ben hier erg benieuwd naar.
er was informatie dat de spellen een speciale modus hebben. Ik ben nu de details aan het samenstellen en we zullen het artikel voltooien.
Ik kan het niet, en ik verontschuldig me bij voorbaat als ik iemand beledig, maar ik heb gewoon een enorme, oprechte en oprechte vreugde die ik met je wilde delen...
De dag na de aankondiging van de nieuwe Apple TV was ik niet lui en schreef ik me in voor de Apple-loterij (zal ik kiezen?) met de mogelijkheid om een Developer Kit te verkrijgen nog voordat deze in de uitverkoop gaat.
Gisteravond schreef Apple mij dat het mij had geselecteerd voor de eerste batch :)
Ik ben dus niet dezelfde als de auteur van dit artikel, en ik werk eerlijk gezegd aan Preschool Brasnicce voor Apple TV - beschikbaar in je App Store in oktober :)
dus ik heb het gevoel dat iedereen die zich heeft aangemeld het waarschijnlijk heeft ontvangen :) Ik heb gisteren ook besteld en ik kijk er echt heel erg naar uit... En ik ken nog iemand die ook op zijn levering wacht...
Hoe dan ook, tot nu toe lijkt het erop dat er waarschijnlijk veel apps zullen zijn als de verkoop begint :)
Iedereen waarschijnlijk niet - ze hebben het niet aan mij gegeven :(
:( Ik heb medelijden met jou.
Als iemand wil, ik heb acht witte Apple-stickers… Ik kan ze opsturen…