Questo articolo tratterà alcuni concetti e decisioni coinvolti nella progettazione di un'app mobile per più piattaforme. Le considerazioni discusse riguarderanno principalmente un'applicazione cross-platform per Android e iOS, ed è scritta dal punto di vista di uno sviluppatore web che muove i primi passi nel mondo mobile. Vedremo alcune delle differenze tra le piattaforme e la loro progettazione dell'interfaccia utente, e esamineremo anche i pro ei contro dello sviluppo multipiattaforma in generale, nonché i dettagli specifici di molti dei più popolari programmi di simulazione multipiattaforma.
Ci sono molte cose da considerare quando si progetta un'app mobile. Prima che tu possa anche disegnare un wireframe o scrivere una riga di codice, devi pensare a cosa farà la tua app, a chi è destinata e dove verrà eseguita. Forse una delle decisioni più importanti è la piattaforma (o le piattaforme) che la tua applicazione avrà come target. Ce ne sono molti tra cui scegliere: iOS, Android, MeeGo, WebOS, BlackBerry OS, Symbian, Windows Phone 7, Maemo e altri ancora!
Certo, molti di noi sono interessati solo ai due grandi contendenti: iOS e Android. Se vuoi che la tua app o il tuo servizio raggiungano il più vasto pubblico possibile, lo sviluppo per almeno questi due ha senso.
Una volta che hai deciso di progettare la tua ultima app per più di una piattaforma, troverai ancora più decisioni da prendere prima di poter scrivere anche la prima riga di codice. Decisioni come:
Lavorare sulla stessa app o servizio per più di una piattaforma non dovrebbe significare reinventare l'app da zero su ognuno di essi. Riutilizzare i componenti e le parti del tuo progetto quando possibile ridurrà il carico di lavoro e contribuirà a rendere riconoscibile il tuo marchio.
Questo è più complicato e dipende molto dalle tue esigenze. Quando si tratta di elementi grafici e di progettazione dell'interfaccia utente, c'è molto che puoi riutilizzare con solo piccole modifiche per rendere la tua idea adatta alle due piattaforme più popolari.
Le strutture multipiattaforma semplificano il riciclaggio dei tuoi sforzi. Ma ci sono pro e contro definiti per lo sviluppo con un framework ibrido rispetto all'uso della piattaforma nativa SDK. Ci sono anche tanti framework multipiattaforma quante sono le piattaforme al giorno d'oggi. Più avanti in questo articolo esamineremo alcuni dei più importanti framework disponibili e, alla fine di questo articolo, verranno discussi i pro e i contro dello sviluppo della scelta di un framework multipiattaforma..
Questo è uno dei più grandi punti nello sviluppo mobile. Puoi avere la migliore idea, e qualche grande codice che la alimenta, ma se non è attraente e facile da navigare, gli utenti guarderanno altrove. L'uso di un SDK multipiattaforma può avere un impatto drammatico sulla progettazione dell'interfaccia utente, consentendo di riutilizzarne ampie porzioni, ma anche limitare alcune delle opzioni.
Bene, la risposta qui non è un semplice "sì" o "no". Discuteremo questo in dettaglio nella prossima sezione.
Un'interfaccia utente completamente personalizzata per ogni piattaforma di distribuzione è un modello molto comune nella progettazione del gioco e funziona così bene.
Plants vs Zombies su Android
Plants vs Zombies su iOS
Perché? Parte del gioco è imparare come funzionano i controlli e l'interfaccia per il gioco, incluso come navigare nella sua interfaccia utente. Un comportamento bizzarro e divertente con un look e una sensazione personalizzati nell'interfaccia utente sono praticamente essenziali per creare una buona esperienza di gioco.
Il tempo è uno dei più grandi influenze progettuali che l'interfaccia utente avrà se si sta progettando per un'app funzionale. Gli utenti vogliono passare dalla tua prima pagina alla missione compiuta nel minor numero possibile di rubinetti. Avere un'interfaccia con segnali familiari, che gli utenti riconosceranno e ricorderanno di utilizzare in altre applicazioni sulla piattaforma renderà la tua app più amichevole e più snella per gli utenti che la utilizzano per la prima volta. Ma questo non significa necessariamente che la porta sia completamente chiusa alla personalizzazione.
Sia che tu abbia scelto di utilizzare l'API nativa o un'API multipiattaforma, c'è molto che puoi fare con il tuo design dell'interfaccia utente per renderlo davvero straordinario senza distruggere la fiducia dell'utente o spingendolo troppo lontano dalla loro zona di comfort.
E la verità è che, se lo si sceglie, progettare e sviluppare con framework multipiattaforma può significare che si ha poca scelta se non quella di creare un'interfaccia utente personalizzata. A seconda del framework che hai selezionato, potresti avere o meno accesso agli elementi dell'interfaccia utente nativa. Ma anche se sei rimasto senza controlli nativi o se stai semplicemente spingendo i limiti dell'API nativa, puoi comunque seguire schemi di progettazione che faranno sentire gli utenti a casa nella tua app.
È tutto sull'equilibrio. Dai un'occhiata ad alcuni dei grandi nomi e cosa stanno facendo con le loro app. Prendi il Facebook app ad esempio: mostra un buon equilibrio tra l'aderenza alle considerazioni sulla piattaforma UX e la riconoscibilità del marchio.
L'app di Facebook su Android
L'app di Facebook su iOS
Immediatamente è riconoscibile come app di Facebook, indipendentemente dalla piattaforma su cui ti trovi. Ma incorpora anche quelli familiare elementi e modelli a cui gli utenti sono abituati, rendendo così facile per un proprietario di iPhone entrare e uscire come lo è per un proprietario di Galaxy.
L'app Tweetdeck è un esempio ancora migliore.
L'app TweetDeck su Android
L'app TweetDeck su iOS
Ironia della sorte, l'app Twitter ufficiale è a mio parere un buon esempio di design multipiattaforma andato storto.
L'app di Twitter su Android
L'app di Twitter su iOS
Il trucco qui è tutto nelle barre degli strumenti e controlli di navigazione. Le barre nella parte superiore e inferiore dello schermo, la barra delle azioni, la barra di navigazione e modelli di progettazione simili devono essere coerenti con lo standard della piattaforma. È possibile modificare leggermente il colore e lo stile, ma la funzionalità e l'aspetto generale dovrebbero essere immediatamente riconoscibili. Tuttavia, i tuoi contenuti possono assumere un look-and-feel molto più unico, quindi ti rimane un design dall'aspetto abbastanza coerente su tutte le piattaforme. Quanto lontano puoi prenderlo? Bene, dai un'occhiata a siti come TappGala e guarda cosa stanno facendo gli altri.
Quando si progetta, sii consapevole delle sottili, e non così sottili, differenze tra le piattaforme. Uno dei più grandi è l'interfaccia fisica, i pulsanti hardware effettivi sul dispositivo. L'iPhone ha un solo pulsante che si basa su pulsanti soft nell'interfaccia utente per tutto il resto. I dispositivi Android, d'altra parte, hanno tre pulsanti standard. Il menu, il pulsante Indietro e il pulsante Home. Gli utenti Android saranno confusi se toccarli non produce un risultato nella tua app multipiattaforma. Android sfoggia anche un menu contestuale, accessibile dal pulsante menu, che ti offre un altro posto per i controlli avanzati. Dovrai creare alloggi nel tuo design iOS per questi pulsanti e menu mancanti con opzioni software.
Se stai progettando e sviluppando piattaforme multiple per dispositivi, puoi riciclare molto di più dei tuoi elementi di design. A seconda delle esigenze, esistono numerosi framework multipiattaforma che possono aiutarti a consolidare il tuo codice base.
Se sei uno sviluppatore web frontend, ti sentirai come a casa con PhoneGap. Usando le tue conoscenze attuali di HTML, CSS e JavaScript puoi sviluppare rapidamente app. PhoneGap è essenzialmente WebKit con un'API JavaScript personalizzata che avvolge l'API nativa. È anche un'ottima opzione per trasferire le tue app Web esistenti e promuoverle in applicazioni mobili complete. Puoi utilizzare uno qualsiasi dei tuoi strumenti Web preferiti sul lato client, compresi i framework JavaScript come jQuery Mobile o SenchaTouch.
Sfortunatamente, poiché la tua app ha esaurito l'istanza di un browser WebKit, le prestazioni non saranno più fresche delle app native o persino di quelle fornite da altri framework disponibili. Inoltre, non avrai accesso ai controlli dell'interfaccia utente nativa (sebbene tu possa utilizzare temi propri simili ai CSS). PhoneGap fornisce un ottimo servizio di build in hosting, che ti consente di sviluppare app in locale, quindi di caricarle e costruirle con il loro servizio online. Questo è ottimo se non si dispone di un Mac per lo sviluppo e il test nativo di iOS. Prima di decidere di utilizzare PhoneGap, assicurati di verificare che supporti tutte le funzionalità necessarie per le tue piattaforme di destinazione. Fortunatamente, il progetto PhoneGap è open-source e completamente estensibile, quindi puoi sempre aggiungere funzionalità mancanti da solo se diventa necessario farlo.
Per vedere altri esempi di app create con PhoneGap, controlla il sito demo ufficiale.
Gli sviluppatori di Rails adoreranno questo! Con RhoMobile puoi sviluppare le tue app in Ruby con un forte approccio MVC! Le viste sono progettate con HTML, CSS e Javascript, quindi puoi portare con te tutte le tue abilità di sviluppo web. Di nuovo, questo framework non ha supporto standard per i controlli nativi, ma ci sono estensioni disponibili che ti permetteranno di ottenere da loro.
Rhodes ha anche un ottimo servizio di costruzione in hosting, RhoHub e alcune interessanti funzionalità aziendali e industriali come il supporto Rhosync e NFC. C'è un'enfasi particolare su RhoMobile come soluzione per le app aziendali. Il framework è anche estendibile, quindi puoi aggiungere le tue librerie native e le gemme di Ruby. Le prestazioni sono piuttosto buone in quanto la tua app verrà precompilata al codice byte.
Per vedere altri esempi di app create con RhoMobile, controlla il sito demo ufficiale.
Titanium Mobile è un'altra struttura adatta agli sviluppatori web che si spostano nello spazio mobile. Titanium inizialmente ha adottato un approccio simile a PhoneGap, fornendo una vista Web che ha avvolto le API native. Ma, dal momento che v1.0, Titanium è stato un cross-compilatore interamente basato su JavaScript, con accesso agli elementi dell'interfaccia utente nativa del dispositivo e un enorme aumento delle prestazioni.
La versione 1.5 ha anche introdotto JSS, JavaScript Stylsheets, modellato su CSS, fornendo un sistema di layout flessibile che può essere utilizzato per personalizzare le visualizzazioni per diversi dispositivi. Sono disponibili anche spazi dei nomi separati per il supporto specifico della piattaforma. Puoi utilizzare qualsiasi IDE che ti piace per sviluppare il tuo codice e Titanium Developer viene utilizzato per preparare e impacchettare la tua app (sebbene il debugging possa essere un problema).
Per vedere altri esempi di app create con Titanium Mobile, controlla il sito demo ufficiale.
Ansca è stata fondata dagli ex ingegneri di Flash e Adobe e la loro esperienza è stata dimostrata nell'implementazione di Corona SDK. Corona ha una API ben arrotondata con una particolare enfasi sullo sviluppo rapido di giochi 2D ad alte prestazioni. L'API include molte opzioni per accelerare lo sviluppo del gioco, come fisica di Box2D, supporto OpenGL + OpenAL, funzioni di animazione e gestione di sprite e scene. Corona include anche alcuni semplici strumenti di migrazione per le app Flash e gli sviluppatori di ActionScript
Chiunque abbia una storia di modding di gioco o di sviluppo di Flash si sentirà a proprio agio con il linguaggio di scripting Lua e il toolset Corona. Ansca fornisce anche un ambiente online con un posto dove promuovere la tua app, condividere risorse di codice e scaricare componenti aggiuntivi di terze parti. Non si tratta solo di giochi, Corona offre anche una libreria di widget dell'interfaccia utente e alcuni elementi nativi per gli sviluppatori di app util. Tutto questo è molto interessante, ma ha un prezzo: $ 199 all'anno per gli sviluppatori che si concentrano su un'unica piattaforma (iOS o Android) e $ 349 / anno per il supporto iOS e Android.
Per vedere altri esempi di app create con il Corona SDK, controlla il sito demo ufficiale.
Unity è essenzialmente un motore di gioco con script con un IDE potente e potente. Progettato per lo sviluppo di giochi ad alte prestazioni su una moltitudine di piattaforme, incluse console e web, questo è il sogno di uno sviluppatore di giochi che diventa realtà. È, tuttavia, sicuramente destinato solo allo sviluppo di giochi 3D, quindi gli sviluppatori di app dovrebbero cercare altrove. Mentre forniscono una versione gratuita del framework, per godere appieno dei vantaggi di Unity, dovrai investire una buona somma di denaro, con una licenza pro che costa $ 1.500 USD più tasse aggiuntive per i componenti aggiuntivi.
Per vedere altri esempi di app create con Unity3D, controlla il sito demo ufficiale.
Quello che segue è un elenco di vantaggi e svantaggi associati all'uso di un SDK di terze parti per sviluppare applicazioni multipiattaforma.
Una volta che ti impegni in un framework, i tuoi progetti diventano dipendenti da una terza parte. Dovrai scegliere un framework stabile con uno sviluppatore dedicato (preferibilmente sviluppatori) e una grande community. I framework open source offrono un po 'di sicurezza qui. Poiché hai accesso alla sorgente, se lo sviluppatore dovesse abbandonare l'SDK in futuro, tu o altri potrebbero continuare a svilupparlo.
Ci vuole tempo perché le modifiche all'API della piattaforma sfuggano ai vari SDK di terze parti. Potrebbe essere necessario attendere un po 'per rendere disponibili le funzionalità più recenti e migliori, se diventano disponibili. Di nuovo, ti affidi all'impegno dello sviluppatore SDK per il progetto.
Gli SDK multipiattaforma rappresentano un'astrazione delle varie piattaforme in un'interfaccia uniforme che dovrebbe teoricamente semplificare lo sviluppo. Ma allo stesso tempo, questa astrazione offusca il tuo accesso all'API sottostante e, di conseguenza, il tuo set di funzionalità potrebbe essere più limitato. Con l'API ufficiale e nativa, sei limitato solo dall'hardware e dalle decisioni di progettazione occasionali effettuate da Google o Apple. Un punto correlato: compiti pesanti come il rendering 3D e l'elaborazione video / audio possono essere particolarmente limitati nell'approccio che si può adottare, se sono possibili a tutti.
Il vantaggio più ovvio nella scelta di un SDK multipiattaforma consiste nel ridurre lo sforzo complessivo per un determinato progetto. Puntando su una singola API, risparmi molto sullo sviluppo e sulla manutenzione della base di codice.
Ciò risale ai vantaggi della freschezza dell'API e del controllo limitato. Molti framework includono un'architettura di estensione o plugin che consente di creare una libreria nativa e integrarla nell'SDK. Questo ti dà davvero il meglio di entrambi i mondi, puoi sviluppare funzionalità mancanti o avanzate con gli strumenti nativi e quindi utilizzare l'SDK multipiattaforma per le attività più comuni.
La selezione di un SDK multipiattaforma che corrisponda alle tue attuali competenze riduce la tua curva di apprendimento. Nei team più grandi che hanno uno strumento per il lavoro, questo può anche significare meno tempo di progettazione, tempo di formazione e meno sviluppatori totali necessari per implementare il progetto.
La maggior parte dei framework multipiattaforma non solo fornisce uno strumento per molti lavori, ma semplifica anche lo sviluppo con linguaggi dinamici e librerie complete per attività ripetitive comuni.
Per rendere la vita ancora più semplice, molti dei principali framework hanno repository ufficiali per condividere codice e risorse o acquistarli da altri sviluppatori.
Si dovrebbe prendere in considerazione una struttura multipiattaforma solo se soddisfa sia i requisiti che le competenze. Fai delle ricerche accurate e assicurati che lo strumento di sviluppo di scelta supporti tutte le funzionalità che desideri includere nella tua app. Non ci sarebbe niente di peggio di arrivare a metà dello sviluppo prima di rendersi conto che un requisito funzionale chiave non è supportato dall'SDK che si sta utilizzando. Tieni a mente che molti dei framework supportano le estensioni, che ti consentono di aggiungere moduli nativi per colmare le lacune lasciate dagli sviluppatori core dell'SDK. In definitiva, un framework multipiattaforma dovrebbe ridurre il carico di lavoro, non creare più problemi sulla tua programmazione già impegnata!