Intégration des API et des applications mobiles
Les utilisateurs mobiles actifs, qui sont souvent en déplacement, préfèrent les applications qui sont pratiques et efficaces. MobileTogether offre aux développeurs des fonctionnalités pour intégrer de manière transparente les API et les applications mobiles, afin de combiner les fonctionnalités des appareils mobiles avec des informations actualisées provenant de sources externes. Cela permet aux développeurs de créer des applications natives multiplateformes personnalisées qui offrent une expérience utilisateur riche et agréable.
Les API publiques constituent une excellente source de données externes pour améliorer pratiquement n'importe quelle application mobile personnalisée. Les développeurs peuvent combiner des informations provenant de plusieurs API afin de fournir aux utilisateurs de meilleures informations, plus rapidement, et ce, de manière élégante et intégrée.
Des API sont disponibles pour presque tous les types d'informations dont votre application mobile pourrait avoir besoin, allant du suivi des vols aux prix des matières premières ou des actions, en passant par le suivi des cyclones tropicaux.
Dans cet article, nous allons examiner une application GPS qui commence par la fonctionnalité de géolocalisation des appareils mobiles pour répondre à la question fondamentale : « Où suis-je ? », puis qui interagit avec les API de Google et de MapQuest pour ajouter une multitude d'informations supplémentaires. Nous intégrerons un moteur de recherche géospatial pour localiser les points d'intérêt à proximité, sur une zone allant d'un quart de mile, jusqu'à la possibilité de localiser précisément l'utilisateur sur une photographie satellite avec une vue panoramique d'un continent entier, voire plus.

Au lancement de notre application, l'utilisateur se voit d'abord présenter des boutons permettant de contrôler le GPS, comme on peut le voir sur cette capture d'écran provenant de la fenêtre du simulateur MobileTogether :

Une fois que la première paire de coordonnées est saisie, un ensemble d'icônes colorées situées dans la barre d'outils permettent d'accéder à de nouvelles options :

De gauche à droite, les boutons effectuent les fonctions suivantes :
- Le bouton de dialogue vert ouvre l'application de messagerie texte de l'appareil mobile avec un message par défaut indiquant : "Je suis ici :", ainsi que les coordonnées de latitude et de longitude et l'adresse de la rue. Cette action combine une action SMS MobileTogether avec du texte provenant de la source de données de géolocalisation, comme on peut le voir ci-dessous dans la définition de l'arborescence des actions. Cette même action fonctionne sur les appareils Android, iPhone ou Windows Phone, et le développeur n'a pas besoin de se soucier du mécanisme spécifique pour contrôler chaque système d'exploitation mobile. MobileTogether gère automatiquement les détails pour chaque appareil.

- L'icône de la carte pliée ouvre l'application de cartographie par défaut du dispositif mobile, en centrant l'affichage sur les coordonnées affichées. Il s'agit également d'une action MobileTogether, et les détails nécessaires à l'interaction avec chaque type de dispositif mobile sont gérés automatiquement :

- L'icône de l'outil à trois points est un bouton "Plus d'informations". Il effectue une série d'actions. Tout d'abord, il envoie les coordonnées de latitude et de longitude à une API de géocodage inverse de MapQuest afin d'obtenir une adresse postale, qui est souvent plus complète que l'adresse de géolocalisation brute. Ensuite, il utilise une action MobileTogether pour ouvrir le navigateur web de l'appareil mobile avec une requête de recherche basée sur l'adresse :

- L'icône de l'outil satellite interagit avec l'API de Google Maps pour générer un fichier image de photo satellite de la localisation, en utilisant le niveau de zoom spécifié par l'utilisateur. L'image peut être enregistrée dans la bibliothèque de photos de l'appareil mobile, ou envoyée par SMS ou par e-mail. Voici un exemple pour les coordonnées mentionnées ci-dessus :

- L'outil de grossissement ouvre une nouvelle page et utilise les API de recherche MapQuest et Place Search pour offrir à l'utilisateur deux options de recherche différentes.
Établir le lien entre les API et les applications mobiles
L'outil d'image satellite utilise une expression XPath pour générer une image à l'aide de l'API Google Maps, puis l'affiche via une URL. Les paramètres requis par l'API sont fournis dans l'URL pour configurer diverses options. Les valeurs de chaque paramètre sont générées dynamiquement. Voici l'expression XPath telle qu'elle apparaît dans l'éditeur d'expressions XPath/XQuery :

Le codage par couleurs permet de mieux comprendre l'expression : le terme en vert, dans la première ligne, est un opérateur de chaîne de caractères, les termes en orange, entre guillemets simples, sont des constantes, et le violet représente des éléments de l'arborescence de données ou des résultats de fonctions.
Voici un exemple de l'URL finale, formatée avec des sauts de ligne pour correspondre à l'expression XPath :

La taille de l'image générée s'ajustera automatiquement à la largeur et à la hauteur de la fenêtre de chaque appareil utilisé par l'utilisateur final, car ces valeurs sont définies comme des variables globales MobileTogether.
L'action attribuée au bouton satellite ouvre l'URL dans le navigateur web par défaut de l'appareil mobile.
MobileTogether prend en charge les protocoles HTTP/FTP, ainsi que les requêtes REST et SOAP, pour permettre l'intégration d'API et d'applications mobiles
Les API MapQuest Search et Place Search utilisent chacune une requête GET d'une API REST pour récupérer des données structurées qui deviennent une source de données dans l'arborescence de données MobileTogether et qui sont disponibles pour un traitement ultérieur.
La requête GET est définie dans un dialogue qui est créé lorsque la source de la page est ajoutée à l'arborescence de données de l'application, comme on peut le voir ici :

Une façon simple de construire la requête consiste à copier-coller un exemple d'URL provenant de la documentation de l'API dans le champ URL ci-dessus, puis à remplacer simplement les définitions des paramètres entre accolades et à définir les sources des valeurs dans la section des paramètres.
La fonctionnalité de recherche par catégorie de notre application permet à l'utilisateur de spécifier le rayon de recherche et le nombre maximal de résultats en sélectionnant des options dans des listes déroulantes. Des listes déroulantes supplémentaires permettent à l'utilisateur de choisir la cible de la recherche à partir d'une liste fournie dans la documentation de l'API. Lorsque l'utilisateur clique sur le bouton de recherche, une action MobileTogether exécute une requête GET :


Les données XML renvoyées sont ajoutées à l'arborescence des données, comme on peut le constater ici dans la section "Sources de la page" de la fenêtre du simulateur MobileTogether :

Une nouvelle page de résultats de recherche s'ouvre pour présenter les informations à l'utilisateur sous forme de tableau défilant. Notez que l'API trie automatiquement les résultats en fonction de la distance par rapport à la position actuelle.

Des boutons supplémentaires sur la page des résultats de recherche permettent d'ouvrir une carte avec l'itinéraire vers la destination, de lancer une recherche sur le web pour le nom et l'emplacement de la destination, ou de passer un appel téléphonique directement vers cette destination en un seul clic.
La fonction de recherche par catégorie donne de bons résultats, mais elle peut être fastidieuse pour l'utilisateur qui doit choisir parmi plus de 300 cibles possibles. L'API de recherche de lieux MapQuest accepte n'importe quelle expression textuelle pour la cible et fournit des résultats similaires. L'API de recherche de lieux est également accessible via une requête GET RESTful et est configurée de manière similaire à la recherche par catégorie :

Il existe plusieurs différences dans les paramètres requis et dans les données renvoyées par l'API de recherche de lieux. La recherche par catégorie offre des résultats en XML ou en JSON, mais l'API de recherche de lieux ne renvoie que des données au format JSON.
Combiner différents formats de données ne pose aucun problème pour MobileTogether. Nous avons simplement créé un champ de saisie dans notre application pour recueillir les données saisies par l'utilisateur, et nous avons à nouveau utilisé une action de rechargement pour exécuter la requête "Get".

Les résultats au format JSON sont affichés ici dans l'arborescence des sources de la page, depuis la fenêtre du simulateur :

Les résultats sont présentés à l'utilisateur sous forme de tableau défilant, dont une partie est visible ici. Cependant, cette API ne renvoie pas la distance par rapport au point actuel, ni les numéros de téléphone

Bien que l'API ait renvoyé des données au format JSON, nous pouvons toujours appliquer ces résultats à une action de géolocalisation MobileTogether, de sorte que le bouton de la carte ouvre l'application de cartographie par défaut de l'appareil mobile et affiche l'itinéraire vers l'adresse indiquée


Une action "MobileTogether Open URL" est attribuée à l'outil "Globe" afin d'ouvrir le nom et l'adresse du lieu sélectionné dans une fenêtre de navigateur web. Les opérateurs de remplacement imbriqués garantissent la création d'une URL avec une syntaxe valide.


Quelques mots sur les clés API
Un paramètre requis par chacune des API décrites ici est une clé API unique, attribuée par le fournisseur de l'API. Cette clé API permet d'identifier et d'authentifier l'utilisateur à chaque requête adressée à l'API. Pour une application partagée entre un groupe d'utilisateurs d'une entreprise, une seule clé partagée, stockée en tant qu'élément persistant dans l'arborescence de données MobileTogether, est probablement la solution la plus appropriée. Les requêtes de tous les utilisateurs seront agrégées, et une seule facture sera émise si l'utilisation totale dépasse le seuil gratuit pour une API donnée.
Lorsqu'une application est destinée à être distribuée au grand public, le développeur peut souhaiter exiger que chaque utilisateur obtienne une clé API unique et qu'il soit responsable de son utilisation individuelle. Notre application comprend une page de paramètres accessible en cliquant sur l'icône en forme d'engrenage sur la page d'accueil. Cette page de paramètres permet à l'utilisateur de définir diverses préférences, notamment le choix de moteurs de recherche, et propose une fonctionnalité permettant de stocker chaque clé API dans un espace de stockage persistant unique à chaque appareil mobile.

Ajouter des fonctionnalités personnalisées
Jusqu'à présent, nous avons décrit des fonctionnalités de géolocalisation assez courantes, que l'on retrouve dans de nombreuses applications mobiles. Vous pouvez également utiliser les API mentionnées ci-dessus, ou d'autres API publiques, pour ajouter des fonctionnalités à des applications qui résolvent des problèmes spécifiques. Par exemple, notre application comprend une page intitulée "Où étais-je". Toute personne qui souhaite documenter un trajet peut cliquer sur l'icône en forme d'enveloppe sur cette page pour envoyer un rapport de voyage par e-mail. Dans notre application, un appui prolongé sur n'importe quelle icône d'outil affiche un message d'aide contextuel :

Vous pouvez créer et combiner des API et des applications mobiles pour vous-même, et découvrir toutes les autres fonctionnalités de MobileTogether pour développer des applications mobiles multiplateformes élégantes, en téléchargeant gratuitement le logiciel MobileTogether Designer, qui est fourni avec une aide intégrée, des tutoriels et de nombreux exemples. Vous pouvez également consulter de nombreuses démonstrations vidéo de MobileTogether pour vous aider à démarrer.