Foutafhandeling bij webservices in mobiele apps

Mobiele telefoons brengen een wereld aan informatie binnen handbereik, maar de functionaliteit van zelfs de best ontworpen mobiele apps kan worden beïnvloed door fouten in webdiensten die optreden tijdens de communicatie met externe servers. Ook een onbetrouwbare mobiele telefoonverbinding op afgelegen locaties kan de prestaties van apps negatief beïnvloeden, vooral bij het opzoeken van gegevens.

MobileTogether, het low-code platform voor het ontwikkelen van mobiele apps dat op meerdere systemen werkt van Altova, bevat functies waarmee ontwikkelaars web service fouten in mobiele apps op een verantwoorde manier kunnen afhandelen, om te voorkomen dat eindgebruikers worden geconfronteerd met onverwachte app-onderbrekingen of onduidelijke foutmeldingen.

In een eerdere post hebben we uitgelegd hoe je HTTP-foutafhandeling kunt implementeren in een MapForce-datamapping. Nu gaan we kijken naar dezelfde webservice, maar dan in een mobiele app, en beschrijven we hoe je foutafhandeling kunt realiseren in MobileTogether.

Het voorbeeld "AirportStatus" in MapForce neemt een luchthavencode van drie letters als invoer en roept een webservice aan die door de FAA wordt aangeboden. Deze webservice retourneert een JSON-bestand met de status van de luchthaven en een beschrijving van eventuele vertragingen. Een mobiele app kan de gebruiker een keuzelijst bieden om een luchthaven te selecteren, waarna dezelfde webservice wordt aangeroepen en het resultaat wordt weergegeven, zoals hier te zien is op een Android-telefoon:

De knoppen onderaan de app "Airport Status" bieden snelle toegang tot twee webpagina's van de FAA (Federal Aviation Administration) die aanvullende informatie bevatten, maar niet geoptimaliseerd zijn voor mobiele apparaten.

We hebben deze mobiele app ontwikkeld met behulp van de MobileTogether Designer, waarbij de webservice is toegevoegd als een databron voor de pagina, gebaseerd op een RESTful API-verzoek. Het dialoogvenster voor het MobileTogether API-verzoek lijkt erg op het dialoogvenster in MapForce, met definities voor de parameter voor de luchthavencode en een header voor een JSON-antwoord:

De werking van de app is erg eenvoudig: de gebruiker selecteert een luchthaven uit de keuzelijst, een REST GET-verzoek wordt uitgevoerd en de weergave wordt bijgewerkt. Deze bewerkingen worden uitgevoerd door een actiegroep die een functie bevat voor het afhandelen van fouten bij webservices in mobiele apps:

Als er een HTTP-fout optreedt tijdens de uitvoering van deze app, tonen we simpelweg een berichtvenster. Ontwikkelaars kunnen kiezen uit drie opties om fouten af te handelen, afhankelijk van de specifieke eisen van de app:

Abortscript: Na het optreden van een fout worden alle volgende acties van de actiegroep beëindigd. Dit is de standaardinstelling als er een fout optreedt. Om ondanks een fout door te gaan, kunt u kiezen voor de optie "Doorgaan" of "Foutmelding genereren".

Vervolg: Acties worden niet beëindigd. In plaats daarvan kan de ontwikkelaar twee paden definiëren en kiezen welke uitgevoerd moet worden wanneer er geen fout optreedt (bij succes), of wanneer er wel een fout optreedt (bij fout).

Foutafhandeling: Als er een fout wordt gedetecteerd, genereert deze optie een uitzondering die wordt opgeslagen in de variabele van de actie "Probeer/Vang". Het "Vang"-gedeelte van de actie "Probeer/Vang" wordt gebruikt om te specificeren welke actie er moet worden uitgevoerd als er een fout optreedt. Als er geen fout optreedt, wordt de volgende actie uitgevoerd. De online help van MobileTogether Designer bevat een gedetailleerde beschrijving van "Probeer/Vang". We hebben "Probeer/Vang" ook beschreven in een eerdere blogpost.

Het beheren van de weergave van informatie in de app

De weergave van de app bestaat uit een reeks tabellen, zoals te zien is in dit gedeeltelijke overzicht van het venster "MobileTogether Pagina-ontwerp":

Bovenin de afbeelding bevindt zich een keuzelijst voor de luchthaven, met daaronder een uitleg van de acties die uitgevoerd moeten worden wanneer een keuze wordt gemaakt. Dit is de trigger voor de actiegroep.

De weergave-instellingen voor elk element bepalen hoe de informatie wordt weergegeven, afhankelijk van de gegevens die door de aanvraag worden geretourneerd.

Het testen van foutafhandeling in webdiensten voor mobiele apps

In onze vorige post over foutafhandeling in MapForce hebben we een alternatieve mapping voor testgegevens ingesteld, waarmee we expliciet verschillende fouten konden genereren en de resultaten konden bekijken. Het blijkt dat we de FAA-webdienst kunnen dwingen een foutmelding te geven door een lege string te verzenden in plaats van een geldige luchthavencode. De laatste optie in de lijst van keuzemogelijkheden stuurt een lege string en veroorzaakt daardoor de fout, zoals hier te zien is in de iPhone-versie van de app in horizontale weergave:

De gebruiker kan vervolgens op de knop "OK" klikken om het bericht te sluiten, en vervolgens de status van een andere luchthaven controleren

Als u nieuw bent met MobileTogether, bekijk dan deze andere voorbeelden en video-demonstraties om een introductie te krijgen. Of, u kunt direct aan de slag gaan en beginnen met het ontwikkelen van uw eigen foutafhandeling voor webdiensten in mobiele apps door de gratis te gebruiken MobileTogether Designer te downloaden.