Servizi REST come fonti di dati per applicazioni mobili
MobileTogether consente agli sviluppatori di arricchire le applicazioni mobile con informazioni provenienti da fonti esterne, tramite Servizi web REST e SOAP, e elabora i dati ricevuti, che siano in formato XML, JSON o HTML. Il supporto di MobileTogether per sia REST che SOAP offre agli sviluppatori di applicazioni mobile l'accesso a vaste risorse di dati online per una vasta gamma di applicazioni.

L'opzione "Aggiungi sorgente" nel software MobileTogether Designer offre l'accesso a finestre di dialogo specifiche per fornire i dettagli relativi alle richieste REST, SOAP e HTTP. In questo articolo del blog, spieghiamo come implementare una richiesta REST per recuperare dati di altitudine a partire dalle coordinate fornite in termini di latitudine e longitudine.
La sfida:
I dati GPS possono essere sia utili che frustranti. Se un'applicazione mobile utilizza il tracciamento GPS in modo continuo, l'utente può essere sommerso da una quantità enorme di dati ogni pochi secondi, e la batteria del dispositivo si scarica rapidamente. Inoltre, i sistemi GPS sono estremamente precisi per la registrazione delle coordinate x/y, ma sono imprecisi quando si tratta di rilevare l'altitudine. Se, ad esempio, vogliamo registrare le variazioni di altitudine dal fondo alla cima di una collina, abbiamo bisogno di una soluzione migliore.
Utilizzando il software MobileTogether Designer, possiamo creare un'applicazione mobile multipiattaforma che consenta agli utenti finali di raccogliere dati per specifiche località, su richiesta. Possiamo estrarre le coordinate di ogni punto e ottenere dati di elevazione precisi utilizzando il servizio web USGS Point Query, descritto sul sito web USGS.
Innanzitutto, possiamo provare il servizio web tramite un browser all'indirizzo http://ned.usgs.gov/epqs

Forniamo semplicemente un insieme di coordinate, selezioniamo le unità di misura e i tipi di dati di output, e clicchiamo su "Ottieni altitudine". Il servizio di interrogazione per l'altitudine restituisce il risultato che viene visualizzato qui sotto:

Due aspetti interessanti di questo risultato sono l'URL generato nella finestra dei risultati, che possiamo utilizzare come modello per specificare la fonte dati del servizio REST in MobileTogether, e il corpo del risultato che mostra la struttura XML. Ecco l'URL completo:

Per aggiungere il servizio REST come fonte dati per un'applicazione mobile, possiamo incollare l'URL nella finestra di dialogo "Richiesta API RESTful di MobileTogether" e sostituire i parametri con le coordinate x e y. Utilizzeremo anche un parametro per specificare le unità di misura, consentendo all'utente di scegliere tra piedi e metri.

Nella nostra applicazione, le coordinate vengono lette da un gruppo di azioni e le variabili definite come dati persistenti vengono aggiornate con i valori di longitudine e latitudine.

Questi valori vengono quindi forniti come parametri per la richiesta GET, come definito dalle espressioni XPath presenti nella colonna "Valore" della tabella "Parametri". Il sistema di aiuto integrato di MobileTogether Designer include una documentazione completa delle opzioni e delle impostazioni dei servizi REST, inclusi il supporto per i campi di intestazione HTTP e per il contenuto multipart HTTP, richiesti da alcuni servizi.
Quando si chiude la finestra di dialogo, una nuova sorgente dati, corrispondente alla richiesta REST, viene automaticamente aggiunta alla finestra "Sorgenti della pagina". Cliccando con il tasto destro sulla nuova sorgente dati, si apre un menu contestuale in cui una delle opzioni è "Importa struttura da XML". Questo apre una finestra di dialogo in cui è possibile specificare un file fisico oppure è possibile incollare l'URL di esempio originale, con i valori dei parametri inclusi, per estrarre direttamente la struttura dal servizio REST. In entrambi i casi, la struttura delle "Sorgenti della pagina" viene aggiornata con nodi che corrispondono al risultato della query:

Se preferite lavorare con dati JSON invece di XML, selezionate semplicemente l'opzione JSON nella finestra di dialogo per le richieste dell'API REST e modificate l'URL per selezionare i dati JSON dal servizio web. Il menu contestuale offrirà l'opzione "Importa struttura da JSON" e il resto del funzionamento di MobileTogether Designer è lo stesso.
L'immagine sottostante mostra la schermata principale dell'applicazione una volta completata. Nella schermata a sinistra, l'applicazione è stata appena avviata e attende che l'utente abiliti il tracciamento GPS selezionando uno dei pulsanti a scelta multipla. A destra, il GPS è attivo e viene visualizzato il pulsante "Aggiorna posizione". L'utente clicca su questo pulsante per acquisire una coppia di coordinate, e l'applicazione esegue una richiesta REST per ottenere l'altitudine corrispondente.

L'applicazione disattiva quindi il tracciamento GPS per ridurre il consumo di energia e aggiorna la visualizzazione con la nuova posizione

I pulsanti "Mostra indirizzo" e "Mostra mappa" espandono la visualizzazione, fornendo maggiori informazioni sulle ultime coordinate. Una pagina "Impostazioni" consente all'utente di selezionare le preferenze e di salvare set di coordinate in file GPX. L'applicazione include anche una pagina "Dettagli" che visualizza i dati GPS grezzi relativi all'ultimo punto registrato.
Se desiderate provare l'applicazione di persona, scaricate MobileTogether Designer – il suo utilizzo è gratuito – e ottenete una copia dell'applicazione di geolocalizzazione e dei file associati su GitHub all'indirizzo https://github.com/altova/MobileTogether-geolocation-example. Potete eseguirla nel simulatore integrato in MobileTogether Designer e visualizzare l'aspetto dell'applicazione su Android, iOS, Windows Phone e altri sistemi operativi. Abbiamo persino incluso un file di dati con coordinate per simulare un dispositivo mobile in movimento mentre l'applicazione è in esecuzione nel Designer.