Apple ha presentato la scorsa settimana, tra le altre cose la nuova Apple TV con il sistema operativo tvOS. Il fatto che le applicazioni dell'App Store possano essere installate nella nuova scatola nera ha sicuramente reso gli sviluppatori molto felici.
Gli sviluppatori hanno due opzioni. Possono scrivere un'app nativa che abbia pieno accesso all'hardware di Apple TV. L'SDK disponibile (set di librerie per sviluppatori) è molto simile a quello che gli sviluppatori già conoscono da iPhone, iPad e i linguaggi di programmazione sono gli stessi: Objective-C e il più giovane Swift.
Ma per le applicazioni più semplici, Apple ha offerto agli sviluppatori una seconda opzione sotto forma di TVML - Television Markup Language. Se ritieni che il nome TVML assomigli sospettosamente a HTML, hai ragione. In realtà è un linguaggio di markup basato su XML e molto simile all'HTML, solo che è molto più semplice e ha una sintassi più rigorosa. Ma è assolutamente perfetto per applicazioni come Netflix. E anche gli utenti ne trarranno vantaggio, perché il rigore del TVML farà sì che le applicazioni multimediali abbiano lo stesso aspetto e funzionino allo stesso modo.
Percorso per la prima applicazione
Quindi la prima cosa che ho dovuto fare è stata scaricare la nuova versione beta dell'ambiente di sviluppo Xcode (è disponibile la versione 7.1 qui). Questo mi ha dato accesso all'SDK di tvOS e ho potuto avviare un nuovo progetto rivolto specificamente all'Apple TV di quarta generazione. L’app può essere solo per tvOS oppure il codice può essere aggiunto a un’app iOS esistente per creare un’app “universale” – un modello simile alle attuali app per iPhone e iPad.
Problema uno: Xcode offre solo la possibilità di creare un'app nativa. Ma ho trovato molto rapidamente una sezione nella documentazione che aiuterà gli sviluppatori a modificare questo scheletro e a prepararlo per TVML. In pratica si tratta di poche righe di codice in Swift che, proprio su Apple TV, creano un oggetto a schermo intero e caricano la parte principale dell'app, che è già scritta in JavaScript.
Problema due: le applicazioni TVML sono davvero molto simili ad una pagina web, e quindi tutto il codice viene caricato anche da Internet. L'applicazione stessa è in realtà solo un "bootloader", contiene solo un minimo di codice e gli elementi grafici più elementari (icona dell'applicazione e simili). Alla fine, sono riuscito a inserire con successo il codice JavaScript principale direttamente nell'app e ho avuto la possibilità di visualizzare almeno un messaggio di errore personalizzato quando Apple TV non è connessa a Internet.
Terzo piccolo problema: iOS 9 e con esso tvOS richiede tassativamente che tutte le comunicazioni verso Internet avvengano crittografate tramite HTTPS. Questa è una funzionalità introdotta in iOS 9 per tutte le app e il motivo è la pressione sulla privacy degli utenti e sulla sicurezza dei dati. Quindi sarà necessario distribuire un certificato SSL sul server web. Può essere acquistato per soli 5 dollari (120 corone) all'anno oppure è possibile utilizzare, ad esempio, il servizio CloudFlare, che si occuperà da solo di HTTPS, automaticamente e senza investimenti. La seconda opzione è disattivare questa restrizione per l'applicazione, cosa che per ora è possibile, ma sicuramente non la consiglierei.
Dopo alcune ore di lettura della documentazione, in cui sono ancora presenti errori minori occasionali, ho elaborato un'applicazione molto semplice ma funzionante. Mostrava il popolare testo "Hello World" e due pulsanti. Ho trascorso circa due ore cercando di attivare il pulsante e di fare effettivamente qualcosa. Ma viste le prime ore del mattino, ho preferito andare a dormire… e questo è stato un bene.
L'altro giorno ho avuto la brillante idea di scaricare un'applicazione TVML di esempio già pronta direttamente da Apple. Ho trovato quello che cercavo molto velocemente nel codice e il pulsante era attivo e funzionante. Tra l'altro ho scoperto su Internet anche le prime due parti del tutorial di tvOS. Entrambe le risorse mi hanno aiutato molto, quindi ho iniziato un nuovo progetto e ho avviato la mia prima vera applicazione.
Prima vera applicazione
Ho iniziato completamente da zero, la prima pagina TVML. Il vantaggio è che Apple ha preparato 18 modelli TVML già pronti per gli sviluppatori che devono solo essere copiati dalla documentazione. La modifica di un modello ha richiesto circa un'ora, principalmente perché stavo preparando la nostra API per inviare il TVML finito con tutti i dati necessari all'Apple TV.
Il secondo modello ha richiesto solo circa 10 minuti. Ho aggiunto due JavaScript: la maggior parte del codice in essi contenuto proviene direttamente da Apple, quindi perché reinventare la ruota. Apple ha preparato degli script che si occupano del caricamento e della visualizzazione dei modelli TVML, incluso l'indicatore di caricamento del contenuto consigliato e la possibile visualizzazione degli errori.
In meno di due ore sono riuscito a mettere insieme un'applicazione PLAY.CZ molto semplice ma funzionante. Può visualizzare un elenco di stazioni radio, può filtrarle per genere e può avviare la radio. Sì, molte cose non sono presenti nell'app, ma le basi funzionano.
[youtube id=”kLKvWC-rj7Q” larghezza=”620″ altezza=”360″]
Il vantaggio è che l'applicazione non è altro che una versione speciale del sito web, che funziona con JavaScript e puoi anche utilizzare CSS per modificarne l'aspetto.
Apple richiede ancora alcune cose da preparare. L'icona dell'applicazione non è una, ma due: più piccola e più grande. La novità è che l'icona non è una semplice immagine, ma contiene un effetto di parallasse ed è composta da 2 a 5 strati (sfondo, oggetti al centro e primo piano). Tutte le immagini attive nell'applicazione possono contenere lo stesso effetto.
Ogni livello è in realtà solo un'immagine su uno sfondo trasparente. Apple ha preparato la propria applicazione per compilare queste immagini a strati e promette di rilasciare presto un plug-in di esportazione per Adobe Photoshop.
Un altro requisito è un'immagine "Top Shelf". Se l'utente posiziona l'app in una posizione di rilievo nella riga superiore (sullo scaffale più alto), l'app deve fornire anche contenuti per il desktop sopra l'elenco delle app. Può esserci solo una semplice immagine oppure può essere un'area attiva, ad esempio con l'elenco dei film preferiti o, nel nostro caso, delle stazioni radio.
Molti sviluppatori stanno appena iniziando a esplorare le possibilità del nuovo tvOS. La buona notizia è che scrivere un'app di contenuti è molto semplice e Apple ha fatto molto per gli sviluppatori con TVML. Costruire un'applicazione (ad esempio PLAY.CZ o iVyszílő) dovrebbe essere facile e veloce. Contemporaneamente alla messa in vendita della nuova Apple TV c'è una buona probabilità che un gran numero di applicazioni siano pronte.
Scrivere un'app nativa o trasferire un gioco da iOS a tvOS sarà più impegnativo, ma non di molto. L’ostacolo più grande saranno i diversi controlli e un limite di 200 MB per app. Un'applicazione nativa può scaricare solo una parte limitata dei dati dallo store, tutto il resto deve essere scaricato in aggiunta e non vi è alcuna garanzia che il sistema non eliminerà questi dati. Tuttavia gli sviluppatori riusciranno sicuramente a far fronte a questa limitazione in tempi brevi, anche grazie alla disponibilità di un set di strumenti chiamati "App Thinning", anch'essi parte di iOS 9.
Bell'articolo. Grazie. Forse col tempo vedremo da Apple anche una soluzione utente per preparare applicazioni (soluzioni) più semplici, come è possibile con FileMaker per iOS, senza che io sia uno sviluppatore.
In teoria... il caricatore Swift è composto da poche righe sempre le stesse, cambia solo l'URL per il primo file TVML. Se qualcuno lo desidera, probabilmente può scrivere uno script che possa eseguire in remoto una build con il tuo URL e inviare indietro un file IPA. Oppure se hai un mac, non è un problema inviare il progetto, dove basta inserire l'URL e avviare la compilazione. Il vantaggio è che se il TVML è esterno all'applicazione, in realtà è necessaria solo una build pubblica ed eventualmente una build privata (di sviluppo) e puoi solo modificare il TVML sul server e quindi il funzionamento dell'applicazione.
"L'app può essere solo per tvOS oppure il codice può essere aggiunto a un'app iOS esistente per creare un'app unica per tutti, un modello simile alle attuali app per iPhone e iPad."
Mi chiedo cosa intendi? Personalmente, non ho trovato da nessuna parte un modo per creare una build che includa iPhone, iPad e Apple TV universali... poiché sono SDK separati (simili a OSX), è necessario un target aggiuntivo per tvOS e quindi anche una build separata. Mi manca qualcosa?
in Xcode 7.1 le applicazioni tvOS possono essere aggiunte come ulteriore destinazione ad un progetto già esistente - simile alle applicazioni per l'Apple Watch o forse un widget per il centro notifiche. Tuttavia, non so ancora come verrà caricato nello store... presumo che Xcode invierà un pacchetto e l'App Store lo dividerà... Probabilmente simile a quello che fanno ora con Watch
noo.. secondo me sono 2 cose completamente diverse.. watch è un'estensione.. o almeno lo era fino a watchOS 2.0.. veniva dato insieme al target iOS e non funzionava nemmeno senza iPhone.. ATV è un'entità separata.. sto parlando di questo, se la build per ATV sarà separata (occorre pagare 2$) e in più iOS pagato per 2$, oppure sarà possibile concedere un'universalità Build a 2$ sia per iOS che per la famiglia ATV. per ATV..
quindi verrà mostrato il lancio reale, ma in realtà si comporta come il codice di Apple Watch, ad esempio. Altrimenti, la documentazione afferma che sarà possibile aggiungere il codice per tvOS all'applicazione esistente e quindi sarà possibile vendere un'app (un'entità nell'App Store) sia per iOS che per tvOS contemporaneamente - un acquisto per dal cliente, o come entità separata: un acquisto separato per iOS e per tvOS.
Giusto per chiarire, non si tratta di 200 MB per app, ma di 200 MB archiviati localmente e il resto scaricato dalla rete quando necessario
Grazie, è quello che pensavo, ma probabilmente ho sbagliato frase. Tutto ciò che supera i 200 MB (o tutto ciò che viene scaricato in aggiunta) viene archiviato come cache e se il sistema decide che sta esaurendo lo spazio, inizia a eliminarlo, cosa che probabilmente non accadrà finché non ci sarà abbastanza spazio libero e quindi il contenuto meno utilizzato verrà eliminato, quindi in pratica probabilmente non sarà un grosso problema.
Cos'altro devo scoprire, presumibilmente questo limite non si applicherà ai giochi, o il gioco potrebbe essere più grande di 200 MB alla base. Ma ancora non so esattamente cosa si intenda esattamente. È del tutto possibile che Apple stia ancora adattando questa politica in base al feedback degli sviluppatori.
hehe Pokemon GCC – 4 GB, Ordina caos online – 1,6 GB Hearthstone 1,3 GB Sono davvero curioso di sapere questo.
c'erano informazioni che i giochi hanno una modalità speciale. Sto mettendo insieme i dettagli ora e completeremo l'articolo.
Non posso farlo, e mi scuso in anticipo se offenderò qualcuno, ma ho solo una gioia immensa, sincera e genuina che volevo condividere con voi...
Il giorno dopo l'annuncio della nuova Apple TV, non sono stato pigro e mi sono iscritto alla lotteria Apple (devo scegliere?) con la possibilità di ottenere un Developer Kit ancor prima che venga messo in vendita.
Ieri sera Apple mi ha scritto che mi ha selezionato per il primo lotto :)
Quindi, non sono l'autore di questo articolo e onestamente sto lavorando su Preschool Brasnicce per Apple TV, disponibile nel tuo App Store nel mese di ottobre :)
quindi ho la sensazione che tutti quelli che si sono registrati probabilmente l'hanno capito :) Anch'io ho ordinato ieri e non vedo davvero l'ora... E conosco un'altra persona che sta aspettando la consegna...
Ad ogni modo, finora sembra che probabilmente ci saranno molte app quando inizieranno le vendite :)
Probabilmente non lo fanno tutti, non me l'hanno dato :(
:( Mi dispiace per te.
Se qualcuno vuole, ho otto adesivi Apple bianchi... posso spedirli...