Het integreren van API's en mobiele applicaties

Drukke mobiele gebruikers die onderweg zijn, geven de voorkeur aan apps die handig en efficiënt zijn. MobileTogether biedt ontwikkelaars functies waarmee ze API's en mobiele apps naadloos kunnen integreren, zodat de functionaliteit van mobiele apparaten gecombineerd kan worden met actuele informatie van externe bronnen. Dit stelt ontwikkelaars in staat om op maat gemaakte, platformonafhankelijke apps te creëren die een rijke en aantrekkelijke gebruikerservaring bieden.

Openbare API's zijn een uitstekende bron van externe data waarmee vrijwel elke aangepaste mobiele app kan worden verbeterd. Ontwikkelaars kunnen informatie uit verschillende API's combineren om gebruikers betere informatie te bieden, sneller en in een overzichtelijke, geïntegreerde vorm.

API's zijn beschikbaar voor vrijwel elk type informatie dat uw mobiele app nodig kan hebben, van vluchttracking tot prijzen van grondstoffen of aandelen, tot het volgen van tropische stormen.

In dit artikel gaan we kijken naar een GPS-app die begint met de basisfunctionaliteit van locatiebepaling op mobiele apparaten, om de vraag te beantwoorden: "Waar ben ik?". Vervolgens integreert de app met API's van Google en MapQuest om een schat aan aanvullende informatie toe te voegen. We zullen een zoekmachine integreren die rekening houdt met de locatie, zodat gebruikers nabijgelegen bezienswaardigheden kunnen vinden, tot op een straal van ongeveer 400 meter. Bovendien kunnen gebruikers hun exacte locatie weergeven op een satellietfoto, met een breedbeeldweergave van een heel continent of meer.

Wanneer de app wordt gestart, krijgt de gebruiker in eerste instantie knoppen te zien voor GPS-bediening, zoals te zien is in deze weergave van het venster van de MobileTogether Simulator:

Zodra de eerste set coördinaten is vastgelegd, bieden een reeks kleurrijke pictogrammen in de werkbalk toegang tot nieuwe opties:

Van links naar rechts voeren de knoppen de volgende functies uit:

  • De groene knop voor interactie opent de app voor tekstberichten op het mobiele apparaat met een standaardbericht dat begint met "Ik ben hier: ", gevolgd door de breedte- en lengtegraadcoördinaten en het straatadres. Deze knopactie combineert een MobileTogether SMS-actie met tekst uit de bron van de locatiegegevens, zoals te zien is in de definitie van de Actieboom. Deze actie werkt hetzelfde op Android, iPhone of Windows-telefoons, en de ontwikkelaar hoeft zich geen zorgen te maken over de specifieke werking van elk mobiel besturingssysteem. MobileTogether regelt de details voor elk apparaat automatisch.
  • Het pictogram van de uitgevouwen kaart opent de standaardkaartapplicatie van het mobiele apparaat, gecentreerd op de aangegeven coördinaten. Dit is ook een MobileTogether-actie, waarbij de details voor de interactie met elk type mobiel apparaat automatisch worden afgehandeld:
  • Het pictogram met de drie puntjes is een knop met de tekst "Meer informatie". Deze knop voert een reeks acties uit. Ten eerste worden de breedte- en lengtegraden verzonden naar een MapQuest Reverse Geocode API om een straatadres te verkrijgen. Dit adres is vaak vollediger dan het ruwe geografische adres. Vervolgens wordt een MobileTogether-actie gebruikt om de webbrowser van het mobiele apparaat te openen met een zoekopdracht op basis van het adres:
  • Het pictogram voor de satellietweergave communiceert met de Google Maps API om een satellietfoto van de locatie te genereren, waarbij de door de gebruiker opgegeven zoomniveau wordt gebruikt. De afbeelding kan worden opgeslagen in de fotogalerij op het mobiele apparaat, of via een SMS-bericht of e-mail worden verzonden. Hieronder een voorbeeld voor de eerder genoemde coördinaten:
  • Het vergrootglas-gereedschap opent een nieuwe pagina en maakt gebruik van de MapQuest Search- en Place Search-API's om de gebruiker twee verschillende zoekopties te bieden.

Het hulpmiddel voor satellietbeelden gebruikt een XPath-expressie om een afbeelding te genereren met behulp van de Google Maps API en opent deze via een URL. De parameters die door de API vereist worden, worden als onderdeel van de URL meegegeven om verschillende opties in te stellen. De waarden voor elke parameter worden dynamisch gegenereerd. Hieronder de XPath-expressie, zoals deze te zien is in de XPath/XQuery-expressie-editor:

De kleurcodering helpt om de betekenis te verduidelijken: het groene element in regel 1 is een stringoperator, de oranje elementen tussen aanhalingstekens zijn constanten, en paars vertegenwoordigt elementen uit de datastructuur of resultaten van functies.

Hier is een voorbeeld van de uiteindelijke URL, opgemaakt met regelafbrekingen om overeen te komen met de XPath-expressie:

De gegenereerde afbeeldingsgrootte wordt automatisch aangepast aan de breedte en hoogte van het scherm van elk apparaat van de eindgebruiker, omdat die waarden zijn gedefinieerd als globale variabelen in MobileTogether.

De actie die aan de satellietknop is toegewezen, opent de URL in de standaard webbrowser van het mobiele apparaat.

MobileTogether ondersteunt HTTP/FTP, REST en SOAP-verzoeken om API's en mobiele apps te integreren

De MapQuest Search API en de Place Search API gebruiken beide een RESTful API-get-aanvraag om gestructureerde gegevens op te halen. Deze gegevens worden een bron voor een pagina in de databoom van MobileTogether en zijn beschikbaar voor verdere verwerking.

De GET-aanvraag wordt gedefinieerd in een dialoogvenster dat wordt gecreëerd wanneer de broncode van de pagina wordt toegevoegd aan de datastructuur van de applicatie, zoals hier te zien is:

Een eenvoudige manier om de aanvraag te construeren is om een voorbeeld-URL uit de API-documentatie in het veld hierboven te plakken, en vervolgens de parameterdefinities binnen de accolades te vervangen. Definieer vervolgens de bronnen voor de waarden in het parametergedeelte.

De zoekfunctie met categorieën in onze app stelt de gebruiker in staat om het zoekbereik en het maximale aantal resultaten te specificeren door opties te selecteren uit keuzelijsten. Aanvullende keuzelijsten stellen de gebruiker in staat om het zoekdoel te selecteren uit een lijst die in de API-documentatie wordt vermeld. Wanneer de gebruiker op de zoekknop klikt, voert een MobileTogether-actie een GET-verzoek uit:

De XML-gegevens die worden geretourneerd, worden toegevoegd aan de datastructuur, zoals te zien is in het gedeelte "Pagina-bronnen" van het venster van de MobileTogether Simulator:

Een nieuwe zoekresultaatpagina wordt geopend om de gebruiker informatie te presenteren in de vorm van een scrollbare tabel. Let op dat de API de resultaten automatisch sorteert op basis van de afstand tot de huidige locatie.

Aanvullende knoppen op de pagina met zoekresultaten openen een kaart met de route naar de bestemming, starten een webzoekopdracht met de naam en locatie van de bestemming, of maken het mogelijk om met één klik een telefoongesprek te starten met de bestemming.

De categorische zoekfunctie levert goede resultaten, maar het kan voor de gebruiker lastig zijn om te kiezen uit meer dan 300 mogelijke opties. De MapQuest Place Search API accepteert elke tekstuele zoekterm en levert vergelijkbare resultaten. De Place Search API wordt ook benaderd via een RESTful GET-verzoek en is op dezelfde manier opgebouwd als de categorische zoekfunctie:

Er zijn verschillende verschillen in de parameters die vereist zijn en in de gegevens die door de Place Search API worden geretourneerd. De categoriezoekfunctie biedt resultaten in XML- of JSON-formaat, terwijl de Place Search API alleen JSON-resultaten teruggeeft.

Het combineren van verschillende dataformaten is geen probleem voor MobileTogether. We hebben eenvoudigweg een invoerveld toegevoegd aan onze app om gebruikersinvoer te verzamelen, en we hebben opnieuw een "Herladen"-actie gebruikt om de GET-verzoek uit te voeren.

De JSON-resultaten zijn hier te zien in de boomstructuur van de broncode van de pagina, die te vinden is in het venster van de simulator:

De resultaten worden aan de gebruiker gepresenteerd in een scrollbare tabel, die hier in een gedeeltelijke weergave wordt getoond. Let op: deze API retourneert geen afstand tot het huidige punt, noch telefoonnummers

Hoewel de API JSON-gegevens retourneerde, kunnen we de resultaten nog steeds gebruiken in een MobileTogether-geolocatieactie, zodat de knop op de kaart de standaardkaartapplicatie van het mobiele apparaat opent en de route naar het opgegeven adres weergeeft

Een MobileTogether Open URL-actie wordt toegewezen aan de "Globe"-tool om de naam en het adres van de resultaatlocatie in een webbrowser te openen. De geneste vervangingsoperatoren zorgen ervoor dat er een URL met een correcte syntaxis wordt gegenereerd.

Een woordje over API-sleutels

Een vereiste parameter voor elk van de hier beschreven API's is een unieke API-sleutel, toegewezen door de aanbieder van de API. Deze API-sleutel identificeert en authenticatieert de gebruiker bij elk API-verzoek. Voor een applicatie die wordt gedeeld door een groep specifieke gebruikers binnen een bedrijf, is het waarschijnlijk het meest geschikt om één gedeelde sleutel te gebruiken, opgeslagen als een persistent element in de MobileTogether-datastructuur. Verzoeken van alle gebruikers worden samengevoegd, en er wordt één factuur opgesteld als het totale gebruik van een bepaalde API de gratis limiet overschrijdt.

Wanneer een app bedoeld is voor algemene distributie, kan de ontwikkelaar ervoor kiezen om van elke gebruiker een unieke API-sleutel te vereisen en verantwoordelijkheid te nemen voor het individuele gebruik. Onze app bevat een instellingenpagina die toegankelijk is door op het tandwielicoon op de startpagina te klikken. De instellingenpagina stelt de gebruiker in staat om verschillende persoonlijke voorkeuren in te stellen, waaronder een keuze van zoekmachines, en biedt een functie om elke API-sleutel op te slaan in een persistentiegegevensbestand dat uniek is voor elk mobiel apparaat.

Voeg aangepaste functionaliteit toe

Tot nu toe hebben we vrij veelvoorkomende functies voor locatiebepaling beschreven die in veel mobiele apps te vinden zijn. U kunt ook gebruikmaken van de hierboven beschreven API's – of andere openbare API's – om functionaliteit toe te voegen aan apps die specifieke problemen oplossen. Zo bevat onze app bijvoorbeeld een pagina met de titel "Waar was ik?". Iedereen die een reisroute wil documenteren, kan op de envelop-knop op deze pagina klikken om een reisverslag per e-mail te verzenden. In onze app opent een langere klik op elk pictogram een pop-up met een helpbericht:

U kunt zelf API's en mobiele apps combineren en alle andere functies van MobileTogether uitproberen voor het ontwikkelen van elegante, platformonafhankelijke mobiele apps, door de gratis MobileTogether Designer te downloaden. Deze software wordt geleverd met geïntegreerde hulp, tutorials en veel voorbeelden. U kunt ook veel video-demonstraties bekijken om u op weg te helpen.