Recommandations en matière d’applications prenant en charge la géolocalisation (applications du Windows Store en C#/VB/C++ et XAML)

Cette rubrique décrit les pratiques recommandées pour créer une application prenant en charge la géolocalisation. Elle répertorie également les exigences auxquelles votre application doit se conformer pour garantir une expérience utilisateur satisfaisante.

Feuille de route : comment cette rubrique s’articule-t-elle par rapport aux autres ? Voir :

Recommandations en matière de performances

Cette section décrit plusieurs méthodes destinées à garantir que votre application obtient les données de géolocalisation dont elle a besoin sans pour autant utiliser plus de ressources que nécessaire.

Utiliser des demandes de géolocalisation uniques lorsque des mises à jour ne sont pas requises

Certaines applications n’ont besoin d’acquérir des données de géolocalisation qu’une seule fois et ne nécessitent pas de mises à jour géographiques. Par exemple, une application qui ajoute une balise de géolocalisation à une photo ou un message électronique n’a pas besoin de recevoir d’événements de mise à jour géographique. Ce type d’application doit demander la géolocalisation via la méthode GetGeopositionAsync, telle qu’elle est décrite dans Détection de l’emplacement d’un utilisateur.

Souscrire aux événements de géolocalisation lorsque c’est approprié

Utilisez les événements PositionChanged et StatusChanged pour détecter un déplacement au-delà d’un seuil spécifique ou pour des mises à jour géographiques continues au fur et à mesure qu’elles se produisent.

Ajuster le seuil de déplacement

Certaines applications n’ont besoin de mises à jour géographiques que lorsque l’utilisateur effectue un long déplacement. Ainsi, une application qui fournit des actualités locales ou des mises à jour météorologiques peut ne pas avoir besoin de mises à jour géographiques, à moins que l’utilisateur ne change de lieu en se rendant dans une autre ville. Dans ce cas, vous réglez la distance minimale requise avant déclenchement d’un événement de mise à jour géographique en définissant la propriété MovementThreshold. Cette propriété a pour effet de filtrer les événements PositionChanged. Des événements de ce type ne se déclenchent que lorsque le changement de position dépasse le seuil de déplacement. Lorsque vous définissez la propriété MovementThreshold, elle ne modifie pas la fréquence à laquelle la source des données de géolocalisation (telle que le Service de localisation Windows ou un appareil GPS connecté) calcule la position.

Définir l’intervalle de rapport

Définissez une propriété d’intervalle de rapport qui est conforme à votre expérience de l’application et diminue le recours aux ressources système. Par exemple, une application météo peut nécessiter une mise à jour des données toutes les 15 minutes seulement.

En dehors des applications de navigation en temps réel, la plupart des applications n’exigent pas un flux constant de mises à jour géographiques extrêmement précises. Si votre application n’a pas besoin d’un flux de données ultra précis ou si elle nécessite des mises à jour de temps à autre, définissez la propriété ReportInterval pour indiquer la fréquence minimale des mises à jour géographiques dont a besoin votre application. La source de localisation peut ensuite économiser de l’énergie en calculant l’emplacement seulement en cas de besoin.

S’agissant d’applications qui nécessitent des données en temps réel, il est nécessaire de définir la propriété ReportInterval avec la valeur 0 pour indiquer qu’aucun intervalle minimal n’est spécifié. L’application reçoit alors les événements selon la fréquence à laquelle la source de localisation la plus précise les envoie.

Les périphériques qui fournissent des données de géolocalisation peuvent suivre l’intervalle de rapport demandé par différentes applications, et fournir des rapports de données au plus petit intervalle demandé. L’application qui a le plus besoin de précision reçoit ainsi les données dont elle a besoin. Par conséquent, il est possible que le service de géolocalisation génère des mises à jour à une fréquence plus élevée que celle demandée par votre application, si une autre application a demandé des mises à jour plus fréquentes.

Remarque  Il n’est pas garanti que la source de géolocalisation honore la demande correspondant à l’intervalle de rapport en question. Bien que certains services de géolocalisation ne tiennent pas compte de l’intervalle de rapport, vous avez quand même intérêt à le définir pour ceux qui le prennent en compte.

Définir la propriété DesiredAccuracy

Dans un souci d’économie d’énergie, définissez la propriété DesiredAccuracy pour indiquer à la plateforme de géolocalisation si votre application a besoin ou non de données de grande précision. Si aucune application n’a besoin de données de grande précision, le système peut économiser de l’énergie en n’activant pas les services GPS.

Définissez DesiredAccuracy sur HIGH pour activer l’acquisition de données par GPS.

Les applications qui exploitent les informations de géolocalisation seulement à des fins publicitaires doivent définir la propriété DesiredAccuracy sur Default et utiliser uniquement un modèle d’appel à application unique pour réduire la consommation d’énergie.

Utiliser la propriété Geocoordinate.Accuracy

Les applications qui ont des exigences de précision spécifiques, telles que les applications de navigation, doivent utiliser la propriété Geocoordinate.Accuracy pour déterminer si les données de géolocalisation disponibles répondent à leurs exigences.

Prendre en compte le retard lié à la prise en main

Lorsqu’une application demande des données de géolocalisation pour la première fois, le service de localisation peut accuser un léger retard d’une à deux secondes au moment de sa prise en main. Vous devez en tenir compte dans la conception de l’interface utilisateur de votre application. Par exemple, il est préférable d’éviter que d’autres tâches soient bloquées dans l’attente de l’exécution de l’appel à GetGeopositionAsync.

Prendre en compte le comportement en arrière-plan

Si une application du Windows Store pour Windows 8 n’a pas le focus, elle ne reçoit pas les événements de mise à jour de localisation tant qu’elle est suspendue en arrière-plan. Si votre application assure le suivi des mises à jour de localisation en les enregistrant dans un journal, tenez-en compte. Une fois que l’application récupère le focus, elle reçoit uniquement les nouveaux événements. Elle ne récupère aucune des mises à jour survenues pendant qu’elle était inactive.

Veille connectée

Lorsque le PC est dans l’état de veille connectée, les objets Geolocator peuvent toujours être instanciés. Toutefois, l’objet Geolocator ne trouvera aucun capteur à agréger et, par conséquent, les appels à GetGeopositionAsync expireront au bout de 7 secondes, les détecteurs d’événements PositionChanged ne seront jamais appelés et les détecteurs d’événements StatusChanged seront appelés une fois avec l’état NoData.

Utiliser efficacement les capteurs bruts et de fusion

Windows 8 prend en charge deux types de capteurs : bruts et de fusion. Les capteurs bruts incluent l’accéléromètre, le gyromètre et le magnétomètre. Les capteurs de fusion incluent l’orientation, l’inclinomètre et la boussole. Les capteurs de fusion obtiennent leurs données à partir des combinaisons des capteurs bruts. Les API Windows Runtime peuvent accéder à chacun de ces capteurs à l’exception du magnétomètre. Les capteurs de fusion sont plus précis et plus stables que les capteurs bruts, mais utilisent plus d’énergie. Vous devez utiliser les capteurs appropriés à bon escient. Pour plus d’informations, voir Choix des capteurs appropriés.

Recommandations en matière d’expérience utilisateur

Cette section contient des recommandations qui garantiront que la localisation fonctionne comme les utilisateurs s’y attendent dans votre application.

Commencer à utiliser l’objet localisation seulement lorsque l’application requiert des données de localisation

Le premier accès de l’application à l’objet de géolocalisation déclenche l’invite de consentement. Cela se produit la première fois qu’une application appelle GetGeopositionAsync ou enregistre un gestionnaire d’événements pour l’événement PositionChanged. Si la fonctionnalité principale d’une application ne nécessite pas l’accès aux données de géolocalisation, l’affichage d’une invite de consentement pour utiliser le périphérique dès le démarrage de l’application peut déconcerter l’utilisateur. Suivez ces recommandations pour bénéficier d’une bonne expérience utilisateur.

RecommandationsExemple

Si la géolocalisation n’est pas cruciale pour votre application, n’y accédez que si l’utilisateur en fait la demande explicite.

Une application de réseau social comporte un bouton « Indiquer ma localisation ». Cette application ne doit pas accéder à la localisation tant que l’utilisateur ne clique pas sur ce bouton.

Si la fonction principale d’une application nécessite la localisation, alors l’application peut accéder au périphérique lorsqu’elle démarre.

Une application visant à positionner l’utilisateur sur une carte requiert la localisation pour remplir son objectif principal. Il est normal que cette application utilise la localisation dès son démarrage pour afficher immédiatement la position de l’utilisateur.

 

Utiliser le thread principal de l’interface utilisateur pour la première utilisation de l’objet Geolocator

La première utilisation de l’objet Geolocator pour obtenir des données de localisation doit être effectuée sur le thread principal de l’interface utilisateur, afin de montrer une invite de consentement à l’utilisateur. La première utilisation de l’objet Geolocator peut correspondre soit au premier appel à GetGeopositionAsync, soit à la première inscription d’un gestionnaire pour l’événement PositionChanged. L’invite de consentement est décrite plus loin dans Recommandations en matière d’utilisation de périphériques sensibles. Cela signifie que, dans une application en JavaScript, la première utilisation de l’objet Geolocator ne doit pas avoir lieu dans un gestionnaire d’activation.

Préciser à l’utilisateur la manière dont ses données de géolocalisation seront utilisées

Fournissez à l’utilisateur des informations sur la manière dont votre application utilise les données de géolocalisation.

Prévoir une interface utilisateur pour actualiser manuellement l’emplacement

Assurez-vous que votre application propose un contrôle d’interface utilisateur pour permettre aux utilisateurs d’actualiser leur emplacement actuel.

Afficher la progression tout en attendant d’obtenir les données de géolocalisation

Votre application doit afficher une barre de progression pendant qu’elle attend de recevoir les données de géolocalisation. Pour plus d’informations sur l’utilisation d’un contrôle de progression, voir Démarrage rapide : ajout de contrôles de progression.

Détection des modifications dans les paramètres de géolocalisation

L’utilisateur peut désactiver la fonctionnalité de géolocalisation par le biais de l’icône Paramètres ou du Panneau de configuration. Pour plus d’informations sur l’interface utilisateur permettant de modifier les paramètres de géolocalisation, voir Paramètres de géolocalisation. Pour obtenir des conseils de conception sur la gestion des modifications des paramètres opérées par les utilisateurs, voir Recommandations en matière d’utilisation de périphériques sensibles.

  • Pour détecter à quel moment l’utilisateur désactive ou réactive les services de localisation :
    • Gérez l’événement StatusChanged. La propriété Status de l’argument de l’événement StatusChanged a la valeur Disabled si l’utilisateur désactive les services de localisation.
    • Vérifiez les codes d’erreur retournés par GetGeopositionAsync. Si l’utilisateur a désactivé les services de localisation, les appels à GetGeopositionAsync se soldent par un échec avec une erreur ACCESS_DENIED et la propriété LocationStatus a la valeur Disabled.
  • Si vous disposez d’une application pour laquelle des données de géolocalisation sont primordiales—par exemple, une application de cartographie—, veillez à effectuer les tâches suivantes :

Notez que l’API de localisation renverra les données à mesure de leur disponibilité. Elle peut d’abord renvoyer une localisation avec un rayon d’erreur important, puis la mettre à jour à mesure que des informations plus précises se feront disponibles. Les applications qui affichent la localisation de l’utilisateur doivent normalement souhaiter la mettre à jour à mesure que des informations plus précises sont disponibles.

Afficher des messages d’erreur ou des boîtes de dialogue appropriés lorsque les services de localisation sont désactivés ou non disponibles

Lorsque l’accès aux données de géolocalisation est révoqué par l’utilisateur ou quand les données ne sont pas mises à la disposition de l’application pour d’autres raisons, présentez à l’utilisateur les messages d’erreur appropriés. Si vous devez avertir l’utilisateur que les services de localisation sont désactivés, suivez les recommandations en matière d’erreurs décrites dans Recommandations en matière d’utilisation de périphériques sensibles, ainsi que les conseils suivants :

  • Nous vous suggérons le message suivant : « Vos services de localisation sont actuellement désactivés. Utilisez l’icône Paramètres pour les réactiver. »
  • Faites en sorte que les messages d’erreur n’interrompent pas le flux de l’application. Si les données de géolocalisation ne sont pas essentielles pour votre application, affichez le message sous forme de texte inséré. Les applications de réseaux sociaux ou de jeu entrent dans cette catégorie.
  • Si les données de géolocalisation sont indispensables au fonctionnement de votre application, affichez le message sous forme de menu volant ou de boîte de dialogue. Les applications de cartographie et de navigation entrent dans cette catégorie.
  • N’essayez pas d’afficher l’icône Paramètres par programme.

Pour obtenir des exemples de message d’erreur affichées sous forme de texte inséré, de boîte de dialogue et de menu volant, voir Recommandations en matière d’utilisation de périphériques sensibles et la section Erreurs de la rubrique Disposition de votre interface utilisateur.

Supprimer les données de géolocalisation mises en cache et libérer l’objet Geolocator lorsque l’utilisateur désactive l’accès aux informations de géolocalisation

Libérez l’objet Geolocator si l’utilisateur désactive l’accès aux informations de géolocalisation via l’icône Paramètres ou les Paramètres du PC. L’application recevra des résultats ACCESS_DENIED lors de tous les appels d’API de géolocalisation.

Si votre application enregistre ou met en cache les données de géolocalisation, effacez toutes les données mises à en cache lorsque l’utilisateur révoque l’accès aux informations de géolocalisation.

Proposez un autre moyen de saisir manuellement un emplacement lorsque les informations de géolocalisation ne sont pas disponibles via les services de localisation.

Prévoir une interface utilisateur permettant de réactiver les services de localisation

Assurez-vous que votre application propose une interface utilisateur qui permet de réactiver les services de localisation—comme un bouton Actualiser qui réinstancie l’objet Geolocator et tente à nouveau de se procurer les informations de géolocalisation.

  • Si l’utilisateur réactive l’accès à la géolocalisation après l’avoir désactivé, aucune notification n’est communiquée à l’application. La propriété Status ne change pas et aucun événement StatusChanged ne se produit. Votre application doit créer un objet Geolocator et appeler GetGeopositionAsync pour essayer d’obtenir des données de géolocalisation à jour, ou se réabonner aux événements PositionChanged. Si l’état indique ensuite que la géolocalisation a été réactivée, effacez tout élément d’interface utilisateur précédemment affiché par votre application pour avertir l’utilisateur que les services de localisation étaient désactivés et répondez de manière appropriée au nouvel état.
  • Votre application doit également tenter à nouveau de se procurer des données de géolocalisation au moment de l’activation, lorsque l’utilisateur tente explicitement d’utiliser la fonctionnalité qui fait appel à des informations de géolocalisation ou à tout autre moment adapté au scénario.

Recommandations pour une représentation graphique de localisation

Assurez-vous que votre application utilise le paramètre de précision que vous recevez via l’API de localisation pour indiquer précisément l’emplacement actuel de l’utilisateur sur la carte. Il existe trois principales bandes de précision—un rayon d’erreur d’environ 10 mètres, un rayon d’erreur d’environ 100 mètres et un rayon d’erreur de plus d’un kilomètre. En utilisant les informations de précision, vous pouvez vous assurer que votre application affiche l’emplacement de façon exacte dans le contexte des données disponibles.

  • Pour une précision égale à peu près à 10 mètres (résolution GPS), l’emplacement peut être indiqué par un point ou une épingle sur la carte. Avec cette précision, les coordonnées de latitude et de longitude ainsi que l’adresse peuvent également être affichées.

    Exemple de carte affichée avec une précision de GPS d’environ 10 mètres.

  • Pour une précision entre 10 et 500 mètres (environ 100 mètres), la localisation est généralement reçue via une résolution Wi-Fi. Dans ce cas, il est conseillé que votre application affiche un rayon d’erreur. Pour les applications qui affichent des directions où un point de centrage est requis, un tel point peut être affiché avec un rayon d’erreur qui l’entoure.

    Exemple de carte affichée avec une précision Wi-Fi d’environ 100 mètres.

  • Si la précision retournée est supérieure à 1 kilomètre, vous recevez probablement les informations de géolocalisation avec une résolution de niveau IP. Ce niveau de précision est souvent trop faible pour localiser avec exactitude un endroit spécifique sur une carte. Votre application doit éviter d’afficher toute représentation géographique d’une épingle ou d’un cercle et effectuer plutôt un zoom avant au niveau de la ville sur la carte, ou sur la zone appropriée en fonction du rayon d’erreur (par exemple, au niveau de la région).

    Exemple de carte affichée avec une précision Wi-Fi d’environ 1 kilomètre.

Lorsque la précision de localisation passe d’une bande de précision à une autre, offrez une transition appropriée entre les différentes représentations graphiques. Pour ce faire :

  • Rendez l’animation de transition fluide et maintenez la transition rapide et aisée.
  • Attendez quelques rapports consécutifs pour confirmer le changement de précision, pour mieux empêcher les zooms indésirables et trop fréquents.

Recommandations pour une représentation textuelle de localisation

Certains types d’applications—par exemple, une application météo ou d’informations locales—ont besoin de moyens de représenter la localisation de façon textuelle sur les différentes bandes de précision. Assurez-vous d’afficher l’emplacement clairement et uniquement jusqu’au niveau de précision fourni dans les données.

  • Pour une précision égale à peu près à 10 mètres (résolution GPS), les données de géolocalisation reçues sont assez précises et peuvent donc être communiquées au niveau du nom du voisinage. Le nom de la ville, le nom du département ou de la province et le nom du pays/de la région peuvent également être utilisés.
  • Pour une précision égale à peu près à 100 mètres (résolution Wi-Fi), les données de géolocalisation reçues sont moyennement précises et nous vous conseillons donc d’afficher les informations jusqu’au nom de la ville. Évitez d’utiliser le nom du voisinage.
  • Pour une précision supérieure à 1 kilomètre (résolution IP), affichez uniquement le département ou la province, ou le nom du pays/de la région.

Considérations de confidentialité

La géolocalisation d’un utilisateur correspond à des informations d’identification personnelle. Le site Web suivant fournit des recommandations concernant la protection de la vie privé des utilisateurs.

Rubriques associées

Exemple de géolocalisation
Windows.Devices.Geolocation
Recommandations en matière d’utilisation de périphériques sensibles
Feuille de route pour la création d’applications en C#, C++ ou VB

 

 

Afficher:
© 2015 Microsoft