REST-services als databronnen voor mobiele applicaties

MobileTogether stelt ontwikkelaars in staat om mobiele apps te vullen met informatie die is opgehaald uit externe bronnen via REST- en SOAP-webservices, en om de ontvangen gegevens te verwerken, ongeacht of het XML, JSON of HTML is. De ondersteuning van MobileTogether voor zowel REST als SOAP biedt mobiele app-ontwikkelaars toegang tot een enorme hoeveelheid online data voor een breed scala aan toepassingen.

De optie "Bron toevoegen" in de MobileTogether Designer biedt toegang tot speciale dialoogvensters waarmee u de details kunt opgeven voor REST-, SOAP- en HTTP-verzoeken. In dit blogbericht beschrijven we hoe u een REST-verzoek kunt implementeren om hoogtedata op te vragen voor coördinaten die zijn aangeleverd als breedte- en lengtegraad.

De uitdaging:

GPS-gegevens kunnen zowel handig als frustrerend zijn. Als een mobiele app continu GPS-tracking gebruikt, kan de gebruiker overspoeld worden met data om de paar seconden, en raakt de batterij van het apparaat snel leeg. Bovendien zijn GPS-systemen zeer nauwkeurig voor het registreren van x/y-coördinaten, maar zijn ze onnauwkeurig bij het rapporteren van de hoogte. Als we bijvoorbeeld hoogteverschillen van de voet tot de top van een heuvel willen registreren, hebben we een betere oplossing nodig.

Met de MobileTogether Designer kunnen we een mobiele applicatie ontwikkelen die op verschillende platforms werkt. Hiermee kunnen eindgebruikers op aanvraak gegevens verzamelen voor specifieke locaties. We kunnen de coördinaten van elk punt extraheren en nauwkeurige hoogtedata opzoeken met behulp van de USGS Point Query webservice, die beschreven staat op de USGS-website.

Ten eerste kunnen we de webservice uitproberen in een webbrowser via de volgende URL: http://ned.usgs.gov/epqs

We bieden simpelweg een set coördinaten, selecteren de gewenste meeteenheden en het uitvoertype, en klikken op "Hoogte opvragen". De service voor het opvragen van hoogtedata geeft het resultaat hieronder weer:

Twee interessante aspecten van dit resultaat zijn de URL die in het resultaatvenster wordt gegenereerd, die we als sjabloon kunnen gebruiken om de REST-service als databron in MobileTogether te specificeren, en de inhoud van het resultaat, die de XML-structuur weergeeft. Hier is de volledige URL:

Om de REST-service als bron voor een mobiele app toe te voegen, kunnen we de URL plakken in het dialoogvenster voor RESTful API-verzoeken van MobileTogether en de parameters vervangen door de x- en y-coördinaten. We gebruiken ook een parameter voor de eenheden, zodat de gebruiker kan kiezen tussen voet en meters.

In onze app worden de coördinaten gelezen door een actiegroep, en variabelen die zijn gedefinieerd als persistente gegevens worden bijgewerkt met de lengte- en breedtegraadwaarden.

Deze waarden worden vervolgens als parameters aan het GET-verzoek toegevoegd, zoals gedefinieerd door XPath-expressies in de kolom "Waarde" van de tabel "Parameters". Het geïntegreerde hulpsysteem van MobileTogether Designer bevat uitgebreide documentatie over REST-servicesopties en -instellingen, inclusief ondersteuning voor HTTP-headervelden en HTTP-multipart-inhoud, die door sommige services vereist worden.

Wanneer we het dialoogvenster sluiten, wordt automatisch een nieuwe databron toegevoegd aan het venster met paginabronnen, die overeenkomt met de REST-aanvraag. Door met de rechtermuisknop op de nieuwe databron te klikken, opent een contextmenu waarin een optie is: "Structuur importeren vanuit XML." Dit opent een bestandsdialoogvenster waarin u ofwel een fysiek bestand kunt selecteren, of u kunt de oorspronkelijke voorbeeld-URL met ingebedde parameterwaarden plakken om de structuur rechtstreeks van de REST-service te halen. In beide gevallen wordt de structuur van de paginabronnen bijgewerkt met knooppunten die overeenkomen met het resultaat van de query:

Als u liever met JSON-gegevens in plaats van XML wilt werken, selecteert u eenvoudigweg JSON in het dialoogvenster voor RESTful API-verzoeken en past u de URL aan om JSON-gegevens op te halen van de webservice. Het contextmenu biedt de optie "Structuur importeren vanuit JSON" en verder werkt alles in de MobileTogether Designer op dezelfde manier.

De afbeelding hieronder toont het hoofdmenu van de voltooide app. Op het scherm aan de linkerkant is de app net gestart en wacht deze op de gebruiker om GPS-tracking in te schakelen door op een van de radiobuttons te klikken. Aan de rechterkant is de GPS ingeschakeld en wordt de knop "Locatie bijwerken" weergegeven. De gebruiker klikt op deze knop om een coördinaatpaar vast te leggen, waarna de app een REST-verzoek uitvoert om de bijbehorende hoogte te verkrijgen.

De app schakelt vervolgens de GPS-tracking uit om het energieverbruik te verminderen en update het scherm met de nieuwe locatie:

De knoppen "Adres weergeven" en "Kaart weergeven" tonen meer informatie over de meest recente coördinaten. Een instellingenpagina stelt de gebruiker in staat om voorkeuren te selecteren en sets van coördinaten op te slaan in GPX-bestanden. De complete app bevat ook een detailpagina die de ruwe GPS-gegevens van het meest recent geregistreerde punt weergeeft.

Als u de app zelf wilt bekijken, kunt u de MobileTogether Designer downloaden – het gebruik ervan is gratis – en een kopie van de geolocatie-app en de bijbehorende bestanden op GitHub vinden op https://github.com/altova/MobileTogether-geolocation-example. U kunt deze uitvoeren in de simulator die is ingebouwd in de MobileTogether Designer en een voorproefje bekijken van hoe de app eruitziet op Android, iOS, Windows Phone en meer. We hebben zelfs een data bestand met coördinaten toegevoegd om een bewegend mobiel apparaat te simuleren terwijl de app draait in de Designer.