REST-Dienste als Datenquellen für mobile Anwendungen

MobileTogether ermöglicht es Entwicklern, mobile Anwendungen mit Informationen zu füllen, die von externen Quellen über REST- und SOAP-Webdienste abgerufen werden, und die empfangenen Daten zu verarbeiten, unabhängig davon, ob es sich um XML, JSON oder HTML handelt. Die Unterstützung von MobileTogether für sowohl REST als auch SOAP bietet mobilen App-Entwicklern Zugriff auf umfangreiche Online-Datenressourcen für eine Vielzahl von Anwendungen.

Die Option "Quelle hinzufügen" im MobileTogether Designer bietet Zugriff auf spezielle Dialogfenster, mit denen Sie die Details für REST-, SOAP- und HTTP-Anfragen eingeben können. In diesem Blogbeitrag beschreiben wir, wie Sie eine REST-Anfrage implementieren können, um Höheninformationen für Koordinaten abzurufen, die als Längengrad und Breitengrad angegeben werden.

Die Herausforderung:

GPS-Daten können sowohl praktisch als auch frustrierend sein. Wenn eine mobile App die GPS-Ortung kontinuierlich nutzt, kann der Benutzer alle paar Sekunden mit einer Flut von Daten überlastet werden, und der Akku des Geräts entleert sich schnell. Außerdem sind GPS-Systeme zwar sehr genau bei der Erfassung von x/y-Koordinaten, aber ungenau bei der Angabe der Höhe. Wenn wir beispielsweise Höhenänderungen von unten nach oben auf einem Hügel erfassen möchten, benötigen wir eine bessere Lösung.

Mit dem MobileTogether Designer können wir eine mobile Anwendung für verschiedene Plattformen erstellen, mit der Endbenutzer bei Bedarf Daten für einzelne Standorte erfassen können. Wir können die Koordinaten für jeden Punkt extrahieren und präzise Höheninformationen mithilfe des USGS Point Query Web-Dienstes abrufen, der auf der USGS-Website beschrieben ist.

Zunächst können wir den Web-Dienst in einem Webbrowser unter der URL http://ned.usgs.gov/epqs testen

Wir geben einfach eine Reihe von Koordinaten ein, wählen die gewünschten Einheiten und Datentypen aus und klicken auf "Höhe abrufen". Der Dienst zur Abfrage von Höhenwerten liefert dann das Ergebnis, das unten angezeigt wird:

Zwei interessante Aspekte dieses Ergebnisses sind die im Ergebnisbereich angezeigte URL, die wir als Vorlage verwenden können, um die Datenquelle des REST-Dienstes in MobileTogether anzugeben, sowie der Inhalt des Ergebnisses, der die XML-Struktur anzeigt. Hier ist die vollständige URL:

Um den REST-Dienst als Datenquelle für eine mobile App hinzuzufügen, können wir die URL in den Dialog für RESTful API-Anfragen von MobileTogether einfügen und die Parameter für die x- und y-Koordinaten ersetzen. Wir werden auch einen Parameter für die Einheit verwenden, damit der Benutzer zwischen Fuß und Metern wählen kann.

In unserer App werden die Koordinaten von einer Aktionsgruppe ausgelesen, und Variablen, die als persistente Daten definiert sind, werden mit den Werten für Längengrad und Breitengrad aktualisiert.

Diese Werte werden dann als Parameter für die GET-Anfrage bereitgestellt, wie durch XPath-Ausdrücke in der Spalte "Wert" der Tabelle "Parameter" definiert. Das integrierte Hilfesystem von MobileTogether Designer enthält umfangreiche Dokumentationen zu REST-Diensten und -Einstellungen, einschließlich der Unterstützung für HTTP-Header-Felder und HTTP-Multipart-Inhalte, die von einigen Diensten benötigt werden.

Wenn wir den Dialog schließen, wird automatisch eine neue Datenquelle, die der REST-Anfrage entspricht, zum Fenster "Seitenquellen" hinzugefügt. Ein Rechtsklick auf die neue Datenquelle öffnet ein Kontextmenü, in dem eine Option "Struktur aus XML importieren" verfügbar ist. Dadurch öffnet sich ein Dateidialog, in dem Sie entweder eine physische Datei angeben oder die ursprüngliche Beispiel-URL mit eingebetteten Parameterwerten einfügen können, um die Struktur direkt vom REST-Dienst abzurufen. In jedem Fall wird die Struktur von "Seitenquellen" mit Knoten aktualisiert, die den Suchergebnissen entsprechen:

Wenn Sie stattdessen mit JSON-Daten anstelle von XML arbeiten möchten, wählen Sie einfach "JSON" im Dialogfenster für die RESTful-API-Anfrage aus und passen Sie die URL an, um JSON-Daten vom Webdienst abzurufen. Das Kontextmenü bietet die Option "Struktur aus JSON importieren", und im MobileTogether Designer funktioniert alles auf die gleiche Weise.

Das Bild unten zeigt die Hauptansicht der fertigen App. Auf dem linken Bildschirmbildschirm wurde die App gerade gestartet und wartet darauf, dass der Benutzer die GPS-Ortung aktiviert, indem er eine der Radiobuttons auswählt. Auf der rechten Seite ist die GPS-Funktion aktiviert und der Button "Standort aktualisieren" wird angezeigt. Der Benutzer klickt auf diesen Button, um einen Koordinatenwert zu erfassen, und die App sendet eine REST-Anfrage, um die entsprechende Höheninformation abzurufen.

Die App deaktiviert dann die GPS-Ortung, um den Stromverbrauch zu reduzieren, und aktualisiert den Bildschirm mit der neuen Position:

Die Schaltflächen "Adresse anzeigen" und "Karte anzeigen" erweitern die Ansicht und zeigen zusätzliche Informationen zu den aktuellsten Koordinaten. Eine Einstellungsseite ermöglicht es dem Benutzer, Präferenzen auszuwählen und Koordinatensätze in GPX-Dateien zu speichern. Die fertige App enthält außerdem eine Detailseite, die die rohen GPS-Daten des zuletzt erfassten Punktes anzeigt.

Wenn Sie die App selbst ausprobieren möchten, laden Sie den MobileTogether Designer herunter – die Nutzung ist kostenlos – und erhalten Sie eine Kopie der Geolocation-App sowie zugehörige Dateien auf GitHub unter https://github.com/altova/MobileTogether-geolocation-example. Sie können sie im Simulator ausführen, der in den MobileTogether Designer integriert ist, und die App so anzeigen, wie sie auf Android, iOS, Windows Phone und anderen Plattformen aussieht. Wir haben sogar eine Datendatei mit Koordinaten hinzugefügt, um ein sich bewegendes mobiles Gerät zu simulieren, während die App im Designer ausgeführt wird.