10

Feb

I primi passi con PhoneGap per Windows Phone

Vi ho già parlato un po’ di tempo fa di PhoneGap, un framework sviluppato da Nitobi (società recentemente acquisita da Adobe) con uno scopo decisamente ambizioso: realizzare applicazione cross – platform in grado di girare su qualunque dispositivo mobile. L’approccio è lo stesso utilizzato dalle applicazioni web mobile (HTML + Javascript), ma con una marcia in più: PhoneGap infatti espone tramite una libreria Javascript una serie di funzioni che vanno a interagire direttamente con il device, permettendo di utilizzare funzionalità native (come i servizi di geolocalizzazione, i sensori, ecc.) che altrimenti non sarebbero utilizzabili solamente tramite HTML / JS standard. Queste funzioni sono univoche, ma “sotto il cofano” PhoneGap si preoccupa di mapparle sulle chiamate native della piattaforma specifica: ecco perciò che, ad esempio, per mostrare un alert utilizzeremo sempre la funzione Javascript navigator.notification.alert, la quale verrà poi declinata da PhoneGap per mostrare la MessageBox di Windows Phone, di iOS o di Android.

Per questo motivo un progetto PhoneGap non è una generica applicazione web, ma viene creato un progetto specifico per ogni piattaforma, da aprire e manipolare con i tool di sviluppo specifici (Visual Studio per Windows Phone, XCode per iOS e Eclipse per Android).

E dove sta l’interoperabilità, direte voi? Ogni progetto PhoneGap include una cartella, chiamata www, che include tutti i file necessari della vera e propria applicazione web: è quello il progetto su cui andremo a lavorare, che poi andremo a duplicare per ogni piattaforma (anche se in realtà c’è una soluzione alternativa, di cui vi parlerò più avanti). Questa applicazione web viene poi inclusa all’interno dell’app nativa tramite il controllo browser che è disponibile per ogni piattaforma (ad esempio, WebBrowser in Windows Phone).

Applicazioni native vs applicazioni cross – platform

Il dibattito sull’utilizzo di applicazioni cross – platform rispetto a quelle native è molto acceso tutt’oggi. Ma quali sono i vantaggi e gli svantaggi di questo approccio?

I vantaggi

Con l’aumentare del numero di piattaforme mobile disponibili sul mercato molte società si sono trovate davanti un problema non indifferente: sviluppare un’applicazione per ogni piattaforma ha un costo non trascurabile e il gioco può non valere la candela, soprattutto nel caso in cui il mobile non sia il core business della società.

In più, una delle cose che incide maggiormente sui costi è la difficoltà ad acquisire le conoscenze necessaria: HTML e Javascript sono tecnologie molto diffuse e non sono una prerogativa degli sviluppatori, al contrario dei linguaggi nativi come C#, Objective-C e Java.

Strumenti come PhoneGap permettono di prendere due piccioni con una fava: l’applicazione viene sviluppata una volta sola ed è possibile demandare il compito anche ad uno sviluppatore web, senza necessità di cercare uno sviluppatore mobile ad hoc per ogni piattaforma (e, date le differenze, è molto difficile trovare una persona con piena conoscenza di ognuna di esse).

Gli svantaggi

Lo svantaggio principale è che l’interoperabilità in certi casi è una chimera, a causa delle grandi differenze nella User Experience proposta da ogni piattaforma: è praticamente impossibile realizzare un’applicazione che offra una user experience e abbia una grafica che si adatti bene ad ogni singola piattaforma. Prendete un’applicazione iPhone e una Windows Phone: le differenze sono numerosissime, a partire dalla grafica, passando per alcuni paradigmi di navigazione (pensiamo al Panorama di Windows Phone).

In più, non si tratta solo di UX ma anche di sfruttare appieno le funzionalità della piattaforma: pensiamo alle Live Tile, forse la caratteristica più particolare delle applicazioni Windows Phone. Si tratta di una feature che non ha un corrispettivo sulle altre piattaforme: se vogliamo sfruttarla, dovremo perciò scrivere del codice non interoperabile. L’alternativa è quella di non usare questa caratteristica, ma ciò si traduce in un abbassamento della qualità: a parità di funzioni dell’applicazione, l’utente finale ne sceglierà sicuramente una in grado di sfruttare le Live Tile.

Infine è importante considerare il discorso performance: un’applicazione cross – platform non sarà mai performante quanto un’applicazione nativa. Inoltre, tanto più c’è la necessità di interagire con il device, tanto più soluzioni di questo tipo diventano complesse da realizzare.

Credo inoltre che, dal punto di vista grafico, Windows Phone sia la piattaforma più difficile: iOS, ad esempio, ha un tipo di interfaccia molto semplice e pulita, facilmente replicabile da un’applicazione web (tanto che con librerie come jQuery Mobile è possibile realizzare applicazioni web mobile praticamente indistinguibili da un’applicazione nativa). Windows Phone ha invece un’interfaccia più particolare e che fa uso di paradigmi come Panorama e Pivot che sono più difficili da ricreare in HTML.

Il rischio perciò è di realizzare applicazioni con un look & feel lontano dalle guidelines di Metro e quindi in grado di attrarre meno gli utenti rispetto ad un’app nativa, facendo nascere così la necessità di dover sviluppare comunque un’interfaccia diversa per ogni sistema.

E quindi?

Non c’è un vincitore in realtà: tutto dipende dal tipo di applicazione che dovete sviluppare, dalle funzionalità del device che volete sfruttare e dal budget che avete a disposizione. Le applicazioni native hanno e avranno sempre comunque una marcia in più, perlomeno fino a quando HTML e Javascript non saranno supportati nativamente (un po’ come sta avvenendo per le applicazioni Metro style di Windows 8).

Chiudo questa “introduzione teorica” con il link ad un bell’articolo di Marco De Sanctis di ASPItalia, che traccia un quadro molto preciso della situazione attuale per quanto riguarda lo sviluppo di applicazioni cross platform.

PhoneGap e Windows Phone

Il matrimonio tra PhoneGap e Windows Phone risale all’uscita di Windows Phone 7.5: questo perchè PhoneGap si appoggia alla tripletta HTML5 / CSS 3 / Javascript, supportata pienamente da Internet Explorer solo a partire dalla versione 9 (vi ricordo che Windows Phone 7 era basato invece su una versione intermedia tra la 7 e la 8).

La versione 1.3 di PhoneGap (che è anche la release più recente) è stata la prima a supportare pienamente Windows Phone, come potete vedere da questa tabella: PhoneGap supporta numerosi altri OS mobile (come Symbian o Bada), ma Windows Phone, iOS (a partire dall’iPhone 3GS in poi) e Android sono le uniche 3 piattaforme alle quali è fornito un supporto completo.

Come già anticipato, tale applicazione viene poi renderizzata attraverso un controllo WebBrowser, il quale è in grado di interagire con il sistema tramite alcune feature messe a disposizione dal controllo (una su tutte, la possibilità di intercettare una funzione Javascript in una pagina e gestirla all’interno dell’applicazione). Se volete approfondire l’argomento, vi consiglio questo articolo del mio amico Ugo pubblicato sul blog di MSDN Italia, dedicato proprio al controllo WebBrowser e alle sue potenzialità.

Nel prossimo post

Dopo questa introduzione teorica, nel prossimo post inizieremo a vedere come usare concretamente PhoneGap: scaricheremo il pacchetto, lo installeremo e inizieremo a lavorare con Visual Studio per creare una semplice applicazione.

by Il blog di Matteo Pagani on 2/10/2012
Post archive