Con l’introduzione dell’iPad, l’iPhone SDK 3.2 supporta ora lo sviluppo di tre tipi di applicazioni: iPhone Apps, iPad Apps e Universal Apps.
iPhone Applications: Le iPhone app sono applicazioni ottimizzate per girare su iPhone e iPod Touch. Queste applicazioni possono essere avviate anche su iPad nella loro risoluzione originale o eventualmente possono essere impostate durante l’esecuzione in visualizzazione “raddoppiata” adatta al display più grande del nuovo dispositivo Apple.
iPad Applications: iPhone SDK 3.2 supporta lo sviluppo di applicazioni per iPad ottimizzate per sfruttare i vantaggi offerti dalle nuove funzionalità del tablet Apple, queste applicazioni saranno però ovviamente compatibili solo con iPad.
Universal Applications: iPhone SDK 3.2 supporta infine lo sviluppo di applicazioni universali, compatibili con tutti i dispositivi su cui è montato iPhone OS.
Questo documento illustra le linee guida che dovremmo seguire per progettare applicazioni universali.
Un’universal app può riconoscere su quale dispositivo sta girando l’applicazione stessa e predisporre automaticamente la miglior esperienza d’uso per quel dispositivo. Universal App correttamente progettate devono tener conto delle caratteristiche e delle funzionalità hardware di un’unico ipotetico dispositivo, ovvero bisogna utilizzare le sole caratteristiche presenti su tutti i dispositivi iPhone OS.
Apple raccomanda a tutti gli sviluppatori iPhone OS di progettare le interfacce utente, di scrivere il codice e costruire le loro applicazioni come Universal Applications. Creare applicazioni universali rende la vita più semplice a tutti.
Agli sviluppatori in quanto avranno una sola applicazione da gestire nell’App Store, anzichè più versioni dello stesso programma e agli utenti in quanto le Universal App acquistate gireranno su tutti i loro dispositivi.
Il supporto SDK per la creazione di Universal apps sarà presto disponibile tra la documentazione ufficiale Apple, per iniziare, possiamo però comunque fare molto fin da subito!
Progettare Universal Apps
Se state pensando di ottimizzare una vostra applicazione iPhone esistente o di creare una nuova applicazione che sfrutti i vantaggi del nuovo iPad, dovrete considerare di progettare la vostra app come un’Universal app.
Un giusto approccio alla progettazione di un’applicazione universale per iPhone OS è quello di iniziare a pensare come l’interazione dell’utente possa essere separata dalla stesura del codice del programma.
Le classi dell’iPhone SDK e la logica del paradigma di programmazione model-view-controller (MVC) incoraggiano una netta separazione tra i dati del vostro programma e le viste utilizzate per rappresentarli.
Il primo step nella creazione di Universal App è quello di progettare l’interfaccia utente per ogni dispositivo, un design quindi per iPad e un’altro per iPhone/iPod. La maggior parte del vostro lavoro di progettazione deve essere influenzato dalle funzionalità che volete mostrare in ognuno dei differenti form-factors.
I seguenti sono alcuni esempi di caratteristiche su cui ragionare durante la progettazione di interfacce per iPad e iPhone/iPod:
Orientamento | Usate l’accelerometro. E’ possibile farlo in qualunque applicazione per determinare l’orientamento di un dispositivo iPhone OS. Con questa funzionalità un’applicazione può migliorare l’esperienza d’uso dell’utente alternando differenti layout, (in landscape o portrait) ottimizzati secondo l’orientamento corrente del device. Questa funzionalità è supportata ad esempio da numerose applicazioni iPhone, come Mail, iPod e Foto. Inoltre, mentre non è sempre desiderabile il supporto all’orientamento su di un’applicazione per iPhone, è molto imporante che tutte le applicazioni che gireranno su iPad abbiano questo supporto. |
Layout | Sfruttate il grande display dell’iPad per offrire agli utenti l’accesso a più informazioni possibili in un unico luogo, per focalizzare l’attenzione sui contenuti che desidera l’utente e per offrire più realismo e una grafica mozzafiato alle interfacce delle vostre applicazioni. |
Gesti | Le dimensioni maggiori del display dell’iPad offrono una più ampia varietà di possibili comandi gestuali usabili nelle nostre applicazioni. Per esempio, è più facile che un utente possa effettuare un comando usando quattro dita su iPad che su iPhone o iPod touch. Un’applicazione universale ben progettata, però, dovrebbe prevedere differenti comandi gestuali, in base al dispositivo su cui verrà avviata l’applicazione stessa. |
Viste divise | Una vista divisa (split view) è una caratteristica offerta dal solo iPad che offre un nuovo modo ad un’applicazione di rappresentare le informazioni a video. E’ importante condiserare attentamente come sfruttare i vantaggi offerti dalle split view, allo stesso modo occorre provvedere che gli utenti riescano ad accedere alle stesse informazioni quando avviano l’applicazione da iPhone o iPod Touch. |
Popovers | Come per le Split View, i popovers rappresentano un nuovo modo per presentare le opzioni agli utenti. Un’universal app ben progettata offrirà le stesse opzioni anche su iPhone e iPod Touch usando per questi, però, le tecniche già conosciute di progettazione di interfacce utente. |
Caratteristiche Hardware | iPad, iPhone e iPod touch condividono molte delle stesse funzionalità hardware. Se però sfruttate una caratteristica hardware non disponibile in un’altro dispositivo, dovreste comunque garantire e trattare questa mancanza nel migliore dei modi possibile. Per esempio, un’applicazione che gira su iPad o iPod touch non dovrebbe presentare l’opzione di “scattare una foto” con la fotocamera, ma dobrebbe presentare la possibilità di scegliere un’immagine dalla propria libreria di foto. |
Stesura di codice in forma condizionale
Al fine di raggiungere i vostri obiettivi per una giusta progettazione di applicazioni universali, dovrete organizzare il vostro codice in modalità condizionale, per determinare, ad esempio, la disponibilità o meno di funzioni (dipendendi dal device usato) durante l’esecuzione del programma.
La stesura di codice condizionale vi permetterà di essere sicuri di caricare le giuste risorse disponibili e di usare le sole funzionalità supportate dal dispositivo per sfruttare adeguatamente l’hardware disponibile.
Strutturate il vostro codice condizionale nel modo più granulare possibile. Provate ad evitare di chiedervi quale sia il tipo di dispositivo o la versione del Sistema Operativo installato. Se avete la necessita di lavorare con un metodo, ad esempio, verificate l’esistenza di questo, piuttosto che chiedervi se siete in esecuzione su iPhone piuttosto che su iPad. Ragionare ad un livello più basso permetterà alle vostre app di ottenere automaticamente nuove funzionalità quando un metodo o una classe viene introdotta con un aggiornamento del sistema operativo. La vostra applicazione avrà la nuova funzionalità senza aver dovuto necessariamente creare un aggiornamento.
Questi sono alcuni elementi per cui potrebbe essere necessario strutturare il codice in forma condizionale:
Resources | File di Interface Builder (.NIB). Nel vostro codice, dovrete prevedere il recupero delle informazioni che indicano su quale piattaforma si sta eseguendo l’applicazione e di conseguenza caricare le giuste risorse. Per esempio, per essere sicuri di presentare la giusta interfaccia utente nella vostra applicazione, potreste aver bisogno di due file .NIB per un’unica vista, una che contiene i controlli per la versione iPhone e l’altra per l’interfaccia utente che verrà caricata su iPad. Il vostro codice deve verificare su quale dispositivo sta girando l’applicazione e quindi scegliere e caricare il giusto file NIB. Grafica. Ovviamente anche qui vorrete molto probabilmente caricare risorse differenti in base al dispositivo utilizzato. Per esempio la grafica su iPad dovrebbe essere più grande rispetto a quella per iPhone. |
Classi | Alcune classi Cocoa Touch sono disponibili solo in alcuni dispositivi. Prima di utilizzare una classe, dovrete verificare se la classe stessa è disponibile. Per esempio, iPhone OS 3.2 permette alle vostra app di condividere documenti con altre applicazioni. Questa caratteristica è presente però solo su iPad. Il vostro codice deve verificare l’esistenza della classe UIDocumentInteractionController class usando NSClassFromString() che restituirà un oggetto di classe valido. Se la classe esiste, il vostro codice potrà usare questa classe e condividere il documento. Se non esiste, dovreste trovare un metodo per “girarci attorno” in modo che l’applicazione lavori correttamente anche sul dispositivo che non supporta la condivisione di documenti. |
Metodi e funzioni | Alcuni dispositivi supportano diversi metodi e funzioni. Se state usando funzioni su un device che non esistono sugli altri, dovrete effettuare le opportune verifiche prima di chiamare questi metodi. La classe principale per la maggior parte degli oggetti Cocoa, NSObject, supporta la verifica in runtime della disponibilità dei metodi. I metodi instancesRespondToSelector e respondsToSelector vi permettono di determinare se un oggetto, o una sua superclasse, possiede il metodo che volete utilizzare nel dispositivo su cui state eseguendo l’applicazione. |
Nuove API nei Framework esistenti | Nuove API aggiunte a framework esistenti lavorano allo stesso modo. Per esempio, UIgraphics su iPad aggiunge il supporto ai file PDF. In questo caso UIGraphics esiste in tutte le versione di iPhone OS, non dovrete quindi verificare il framework, ma le specifiche funzioni (in questo caso PDF) che vorrete usare. |
Funzionalità Hardware | A volte è necessario rilevare se un componente hardware è disponibile. Dovrete usare la stessa metodologia usata per vedere se un metodo software o una funzione è disponibile, per esempio, se state cercando di determinare se il dispositivo in cui si sta eseguendo l’applicazione ha una fotocamera, dovreste interrogare l’UIImagePickerController e la fonte UIImagePickerControllerSourceTypeCamera, e prendere poi la strada appropriata, a livello di programmazione, in base alla risposta che otterrete. |
Creare un’Universal App darà ai vostri utenti la miglior esperienza possibile di utilizzo, non importa in che dispositivo girerà la vostra applicazione. Renderà inoltre la gestione delle vostre applicazioni in App Store più semplice possibile.
Progettate bene, scrivete un buon codice in forma condizionale e creerete ottime Applicazioni!
(Tradotto da documento ufficiale Apple “Introducing Universal Applications for iPhone OS“)
12 Responses to “L#010 – Introduzione alle Applicazioni Universali per iPhone OS – [iPad]”
2 Febbraio 2010
RagazzettoUn articolo ben fatto per un argomento veramente egregio !!!!!
Grazie !
Bravi !
P.S. : se non sbaglio siete i primi nel macweb italiano ad aver fatto un articolo così esaustivo !
Bravi di nuovo !
3 Febbraio 2010
LuigiOttimo articolo, davvero ben fatto ed esauriente 😉
5 Febbraio 2010
Applicazioni Universali per iPhone OS | iPadWorld[…] Il nostro partner di programmazione devAPP.it ha provveduto a tradurre tale documento introduttivo nella nostra lingua per dare la possibilità anche a chi non “mastica” un po’ di inglese di iniziare a prepararsi alla nuova mentalità di progettazione di software per iPhone OS. Potete trovare il documento in italiano al seguente link. […]
5 Febbraio 2010
ZackSalve,
l’articolo come dice bene #1 è ben fatto, infatti l’ha fatto Apple. Questa è solo la traduzione dell’articolo citato reperibile all’interno del sito developer.apple.com nella sezione iPad (accessibile solo a chi possiede un account iPhone Dev Program).
Nella stessa sezione si legge anche la seguente frase:
“iPhone SDK 3.2 beta is pre-release software and is considered Apple Confidential Information.”
Ora, io non vorrei mettere in dubbio la legalità di poter tradurre un documento che io considererei quantomeno “confidenziale”, anche se nel documento originale non c’è scritto niente, ma conoscendo un po’ Apple, secondo me, non è che sia felicissima se ci mettiamo a tradurre dei documenti accessibili ad una sezione del sito a pagamento e li diffondiamo in rete.
Se facessimo tutti così che vantaggi avrebbe chi spende € 79,00 all’anno per sviluppare appplicazioni per iPhone o iPad?
5 Febbraio 2010
Staff devAPPIn effetti, come indicato nell’ultima riga dell’articolo:
“(Tradotto da documento ufficiale Apple “Introducing Universal Applications for iPhone OS“)”
il contenuto di questa guida è stato tradotto da fonte ufficiale Apple.
Non vi sono nozioni di programmazione al suo interno, come potete vedere. Si tratta di una semplice introduzione di come si dovranno strutturare le prossime applicazioni (nuove o esistenti) per renderle compatibili anche con iPad.
Ovviamente tutto quello che verrà pubblicato di più pratico (guide e tutorial) sarà materiale nostro inedito o comunque autorizzato dai rispettivi autori per la pubblicazione.
Infine, la documentazione ufficiale Apple è disponibile per tutti i possessori di account developer gratuito, ottenibile semplicemente registrandosi al sito Apple come developer (gratuitamente), allo stesso modo è possibile ottenere l’intero SDK e accedere a tutta la documentazione. Tra l’altro è disponibile parecchia documentazione per la quale non occorre neanche un account.
http://developer.apple.com/iphone/
Il programma Developer a pagamento, infine, offre altri vantaggi, come ad esempio la pubblicazione su App Store delle proprie creazioni o il testing diretto sui dispositivi.
Ad ogni modo non è un peccato che la documentazione ufficiale sia solo in inglese? 😉
16 Marzo 2010
AndreaComplimenti per il sito. Tra tutti quelli che ho visto (almeno in italiano) il vostro è decisamente il migliore. Anche se si tratta di semplici traduzioni, il vostro lavoro è impeccabile e utilissimo. Continuate così.
In un pomeriggio ho letto tutte le vostre lezioni teoriche e pratiche. Sicuramente avete guadagnato un follower 😉
16 Marzo 2010
Staff devAPPWOW.. grazie per i complimenti.. ci fa molto piacere 🙂
Vorrei precisare solo che tra le nostre pubblicazioni, le traduzioni, sono solo una piccolissima parte, la maggior parte è tutta opera dei nostri autori 🙂
Continua a seguirci, abbiamo qualche sorpresa per il futuro 😉
30 Marzo 2010
Notizie dai blog su I video di tutte le applicazioni Apple che avremo su iPad[…] L#010 – Introduzione alle Applicazioni Universali per iPhone OS – [iPad] Con l’introduzione dell’iPad, l’iPhone SDK 3.2 supporta ora lo sviluppo di tre tipi di applicazioni: iPhone Apps, iPad Apps e Universal Apps. iPhone Applications: Le iPhone app sono applicazioni ottimizzate per girare su iPhone e iPod Touch. blog: devAPP | leggi l'articolo […]
1 Aprile 2010
Notizie dai blog su Apple ha già approvato più di 700 applicazioni per iPad (Video)[…] L#010 – Introduzione alle Applicazioni Universali per iPhone OS – [iPad] Con l’introduzione dell’iPad, l’iPhone SDK 3.2 supporta ora lo sviluppo di tre tipi di applicazioni: iPhone Apps, iPad Apps e Universal Apps. iPhone Applications: Le iPhone app sono applicazioni ottimizzate per girare su iPhone e iPod Touch. blog: devAPP | leggi l'articolo […]
8 Aprile 2010
Tutorial programmazione iPad - Usiamo le Split View | devAPP[…] Potete rispolverare la memoria rileggendo l’introduzione a questo argomento con il nostro primo articolo su questo tema. Oggi non parleremo di Universal App, vedremo semplicemente come sfruttare una nuova […]
6 Luglio 2010
Passare dalla programmazione iPhone a quella iPad, breve panoramica | devAPP[…] creare un’unico programma studiato sia per iPhone che per iPad (maggiori informazioni in questo articolo e un nostro tutorial in […]
13 Dicembre 2012
il ritorno di Google Maps | delicious stark[…] esplorare in tutte le sue funzionalità. L’unica pecca trovata al momento è che non è una applicazione universale iOS, quindi è ottimizzata per i display dell’iPhone / iPod Touch mentre su iPad funziona in […]