Integrazione di API e applicazioni mobile
Gli utenti di dispositivi mobili che sono sempre in movimento preferiscono applicazioni che siano pratiche ed efficienti. MobileTogether offre agli sviluppatori strumenti per integrare senza problemi API e applicazioni mobili, combinando le funzionalità dei dispositivi mobili con informazioni aggiornate provenienti da fonti esterne. Questo consente agli sviluppatori di creare applicazioni native multipiattaforma personalizzate che offrono un'esperienza utente ricca e coinvolgente.
Le API pubbliche rappresentano un'ottima fonte di dati esterni per migliorare quasi qualsiasi applicazione mobile personalizzata. Gli sviluppatori possono combinare informazioni provenienti da diverse API per fornire agli utenti dati migliori, in modo più rapido e in un'interfaccia elegante e integrata.
Sono disponibili API per quasi ogni tipo di informazione di cui la vostra applicazione mobile potrebbe aver bisogno, dalle informazioni sui voli ai prezzi delle materie prime o delle azioni, fino al monitoraggio delle tempeste tropicali.
In questo articolo, analizzeremo un'applicazione GPS che, partendo dalle funzionalità di geolocalizzazione del dispositivo mobile, risponde alla domanda fondamentale: "Dove mi trovo?". Successivamente, l'applicazione si interfaccia con le API di Google e MapQuest per aggiungere una vasta gamma di informazioni aggiuntive. Integreremo anche un motore di ricerca che tiene conto della posizione, per individuare punti di interesse nelle vicinanze, entro un raggio di circa 400 metri, fino ad arrivare a localizzare con precisione la posizione dell'utente in una fotografia satellitare, offrendo una vista panoramica di un intero continente o anche di aree più vaste.

Al momento dell'avvio dell'applicazione, all'utente vengono inizialmente presentati dei pulsanti per il controllo del GPS, come si può vedere in questa schermata estratta dalla finestra del simulatore MobileTogether:

Una volta acquisita la prima coppia di coordinate, una serie di icone colorate nella barra degli strumenti offre l'accesso a nuove opzioni:

Da sinistra a destra, i pulsanti svolgono le seguenti funzioni:
- Il pulsante verde per il dialogo apre l'applicazione di messaggistica del dispositivo mobile con un messaggio predefinito che dice: "Sono qui: ", seguito dalle coordinate di latitudine e longitudine e dall'indirizzo stradale. Questa azione del pulsante combina un'azione SMS di MobileTogether con il testo proveniente dalla fonte di dati di geolocalizzazione, come si può vedere nella definizione dell'albero delle azioni riportata di seguito. La stessa azione funziona su dispositivi Android, iPhone o Windows Phone e lo sviluppatore non deve preoccuparsi del meccanismo specifico per controllare il sistema operativo di ciascun telefono cellulare. MobileTogether si occupa automaticamente dei dettagli per ogni dispositivo.

- L'icona della mappa piegata apre l'applicazione mappa predefinita del dispositivo mobile, centrata sulle coordinate visualizzate. Si tratta anche di un'azione MobileTogether, con i dettagli per l'interfaccia con ciascun tipo di dispositivo mobile gestiti automaticamente:

- L'icona con i tre puntini rappresenta un pulsante "Altre informazioni". Questo pulsante esegue una serie di azioni. Innanzitutto, invia le coordinate di latitudine e longitudine a un'API di geocodifica inversa di MapQuest per ottenere un indirizzo stradale, che spesso è più completo rispetto all'indirizzo di geolocalizzazione grezzo. Successivamente, utilizza un'azione MobileTogether per aprire il browser web del dispositivo mobile con una query di ricerca basata sull'indirizzo:

- L'icona dello strumento satellitare interagisce con l'API di Google Maps per generare un file immagine fotografica satellitare della posizione, utilizzando il livello di zoom specificato dall'utente. L'immagine può essere salvata nella galleria fotografica del dispositivo mobile oppure inviata tramite messaggio SMS o e-mail. Di seguito è riportato un esempio per le coordinate acquisite:

- Lo strumento di ingrandimento apre una nuova pagina e si interfaccia con le API di ricerca di MapQuest e Place Search, offrendo all'utente due diverse opzioni di ricerca.
Creare un collegamento tra le API e le applicazioni mobile
Lo strumento per l'elaborazione di immagini satellitari utilizza un'espressione XPath per generare un'immagine utilizzando l'API di Google Maps e per aprirla tramite un URL. I parametri richiesti dall'API vengono forniti all'interno dell'URL per impostare diverse opzioni. I valori per ciascun parametro vengono generati dinamicamente. Ecco l'espressione XPath come visualizzata nell'editor delle espressioni XPath/XQuery:

La codifica a colori aiuta a chiarire il significato: il termine verde nella riga 1 è un operatore stringa, i termini arancioni racchiusi tra virgolette singole sono costanti, e il colore viola rappresenta elementi provenienti dall'albero dei dati o risultati di funzioni.
Ecco un esempio dell'URL finale, formattato con interruzioni di riga per corrispondere all'espressione XPath:

Le dimensioni dell'immagine generate si adatteranno automaticamente alla larghezza e all'altezza della finestra di ogni dispositivo utilizzato dall'utente finale, poiché tali valori sono specificati come variabili globali di MobileTogether.
La funzione associata al pulsante del satellite apre l'URL nel browser web predefinito del dispositivo mobile.
MobileTogether supporta le richieste HTTP/FTP, REST e SOAP per integrare le API e le applicazioni mobile
Le API MapQuest Search e Place Search utilizzano entrambe una richiesta GET di un'API RESTful per recuperare dati strutturati che diventano la fonte di una pagina nell'albero dati di MobileTogether e che sono disponibili per ulteriori elaborazioni.
La richiesta GET è definita all'interno di un dialogo creato quando la sorgente della pagina viene aggiunta all'albero dei dati dell'applicazione, come si può vedere qui:

Un modo semplice per costruire la richiesta è incollare un esempio di URL dalla documentazione dell'API nel campo URL qui sopra, quindi sostituire semplicemente le definizioni dei parametri all'interno delle parentesi graffe e definire le fonti dei valori nella sezione dei parametri.
La funzione di ricerca per categoria nella nostra app consente all'utente di specificare il raggio di ricerca e il numero massimo di risultati selezionando dalle opzioni disponibili. Ulteriori opzioni permettono all'utente di scegliere l'oggetto della ricerca da un elenco fornito nella documentazione dell'API. Quando l'utente clicca sul pulsante di ricerca, un'azione MobileTogether esegue una richiesta GET:


I dati XML restituiti vengono aggiunti all'albero dei dati, come si può vedere nella sezione "Origini della pagina" della finestra del simulatore MobileTogether:

Viene aperta una nuova pagina dei risultati di ricerca per fornire all'utente le informazioni sotto forma di una tabella scorrevole. Si noti che l'API ha ordinato automaticamente i risultati in base alla distanza dal punto di partenza.

I pulsanti aggiuntivi sulla pagina dei risultati di ricerca aprono una mappa con il percorso per raggiungere la destinazione, avviano una ricerca sul web per il nome e la posizione della destinazione, oppure consentono di effettuare una chiamata telefonica direttamente alla destinazione con un solo clic.
La funzione di ricerca per categoria fornisce buoni risultati, ma potrebbe risultare scomodo per l'utente dover scegliere tra più di 300 possibili opzioni. L'API di ricerca di luoghi di MapQuest accetta qualsiasi frase di testo semplice come parametro di ricerca e fornisce risultati simili. L'API di ricerca di luoghi è accessibile tramite una richiesta GET in formato REST e funziona in modo simile alla ricerca per categoria:

Ci sono diverse differenze nei parametri richiesti e nei dati restituiti dall'API di ricerca di luoghi. La ricerca per categoria offre risultati in formato XML o JSON, mentre l'API di ricerca di luoghi restituisce solo dati in formato JSON.
Combinare diversi formati di dati non è un problema per MobileTogether. Abbiamo semplicemente creato un campo di input per la nostra applicazione per raccogliere i dati inseriti dagli utenti, e abbiamo nuovamente utilizzato un'azione di "Ricarica" per eseguire la richiesta di recupero dati.

I risultati in formato JSON sono visualizzati qui nell'albero dei dati "Origini della pagina" nella finestra del simulatore:

I risultati vengono presentati all'utente in una tabella scorrevole, mostrata qui in una versione parziale. Tuttavia, questa API non restituisce la distanza dal punto corrente né i numeri di telefono

Sebbene l'API restituisca dati in formato JSON, possiamo comunque utilizzare i risultati in un'azione di geolocalizzazione di MobileTogether, in modo che il pulsante sulla mappa apra l'applicazione di mappe predefinita del dispositivo mobile e visualizzi il percorso verso l'indirizzo specificato


Un'azione "Open URL" di MobileTogether viene assegnata allo strumento "Globe" per aprire il nome e l'indirizzo della posizione risultante in una finestra del browser web. Gli operatori "replace" nidificati garantiscono la generazione di un URL con una sintassi corretta.


Una nota sulle chiavi API
Ogni API descritta qui richiede un parametro specifico: una chiave API univoca, assegnata dal fornitore dell'API. Questa chiave identifica e autentica l'utente ogni volta che viene effettuata una richiesta all'API. Per un'applicazione utilizzata da un gruppo definito di utenti aziendali, è probabile che sia più appropriato utilizzare una singola chiave condivisa, memorizzata come elemento persistente nell'albero dati di MobileTogether. Le richieste di tutti gli utenti saranno aggregate e, se l'utilizzo totale supera la quota gratuita per qualsiasi API, verrà generata un'unica fattura.
Quando un'applicazione è destinata alla distribuzione pubblica, lo sviluppatore potrebbe voler richiedere a ciascun utente di ottenere una chiave API univoca ed essere responsabile del suo utilizzo. La nostra applicazione include una pagina delle impostazioni, accessibile cliccando sull'icona a forma di ingranaggio nella pagina di apertura. La pagina delle impostazioni consente all'utente di impostare varie preferenze, tra cui la scelta dei motori di ricerca e una funzionalità per memorizzare in modo permanente, in una sezione specifica per ogni dispositivo mobile, la chiave API assegnata.

Aggiungere funzionalità personalizzate
Finora, abbiamo descritto alcune funzionalità di geolocalizzazione piuttosto comuni, presenti in molte applicazioni mobile. È inoltre possibile utilizzare le API descritte in precedenza, oppure altre API pubbliche, per aggiungere funzionalità alle applicazioni che risolvono problemi specifici. Ad esempio, la nostra app include una pagina intitolata "Dove Ero". Chiunque debba documentare un viaggio lungo un percorso può cliccare sull'icona della busta su questa pagina per inviare un resoconto del viaggio via email. Nella nostra app, un tocco prolungato su qualsiasi icona di strumento apre un messaggio di aiuto a comparsa:

Potete creare e combinare API e applicazioni mobili per voi stessi, e provare tutte le altre funzionalità di MobileTogether per sviluppare applicazioni mobili cross-platform eleganti, semplicemente scaricare il software MobileTogether Designer, che è gratuito, che include un sistema di assistenza integrato, tutorial e numerosi esempi. È inoltre possibile consultare molti progetti MobileTogether dimostrazioni video per facilitare l'inizio.