Recommandations en matière d’applications prenant en charge la géolocalisation

Applies to Windows and Windows Phone

Cette rubrique décrit les recommandations en matière de performance des applications qui nécessitent de géolocaliser un utilisateur.

Pour savoir comment une application du Windows Store détecte l’emplacement d’un utilisateur, voir Exemple de géolocalisation.

Pour apprendre à utiliser des fonctionnalités de géolocalisation dans votre application, voir :

Pratiques conseillées et déconseillées

  • Commencez à utiliser l’objet localisation seulement lorsque l’application requiert des données de localisation.

    Le premier accès de l’application à l’objet Geolocator déclenche une 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.

  • Si la géolocalisation n’est pas cruciale pour votre application, n’y accédez que si l’utilisateur essaie d’effectuer une tâche qui la nécessite. Par exemple, si une application de réseau social comporte un bouton « Indiquer ma localisation », l’application ne doit pas accéder à la localisation avant que l’utilisateur ne clique sur le bouton. Il convient d’accéder immédiatement à la localisation si la fonction principale de votre application le nécessite.

  • Sur Windows uniquement, la première utilisation de l’objet Geolocator 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écisez à l’utilisateur la manière dont les données de géolocalisation seront utilisées.
  • Fournissez une interface utilisateur pour permettre aux utilisateurs d’actualiser manuellement leur emplacement.
  • Affichez une barre ou un anneau de progression tout en attendant d’obtenir les données de géolocalisation. Pour obtenir des informations sur les contrôles de progression possibles et la manière de les utiliser, voir Guidelines for progress controls.
  • Affichez 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 accessibles à l’application pour d’autres raisons, présentez le message d’erreur approprié :

    • Nous vous suggérons le message suivant sur Windows : « Vos services de localisation sont actuellement désactivés. Utilisez l’icône Paramètres pour les réactiver. » Sur Windows Phone, vous pouvez utiliser le message suivant : « La géolocalisation est désactivée sur votre appareil. Pour l’activer, accédez à Paramètres et sélectionnez Emplacement. »
    • 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és 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.

  • Supprimez les données de géolocalisation mises en cache et libérez 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 les Paramètres. 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évoyez une interface utilisateur permettant de réactiver les services de localisation. Par exemple, fournissez un bouton d’actualisation qui réinstancie l’objet Geolocator et essaie de réobtenir les informations de géolocalisation.

    Votre application doit proposer une interface utilisateur pour la réactivation des services 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.

Performances

  • Utilisez des demandes de localisation ponctuelles si votre application n’a pas besoin de recevoir des mises à jour de localisation. Par exemple, une application qui ajoute une balise de géolocalisation à une photo n’a pas besoin de recevoir d’événements de mise à jour géographique. Elle doit plutôt demander la géolocalisation via la méthode getGeopositionAsync, comme décrit dans Détection de l’emplacement d’un utilisateur.

    Quand vous effectuez une demande de géolocalisation ponctuelle, vous devez définir les valeurs suivantes.

    • Spécifiez la précision demandée par votre application en définissant la propriété DesiredAccuracy ou DesiredAccuracyInMeters. Pour obtenir des recommandations concernant l’utilisation de ces paramètres, voir plus bas.
    • Définissez le paramètre d’âge maximal de GetGeopositionAsync pour spécifier depuis combien de temps un emplacement peut avoir été obtenu pour être utile à votre application. Si votre application peut utiliser une position qui a été obtenue quelques secondes ou minutes auparavant, elle peut recevoir une position presque immédiatement et contribuer à prolonger l’autonomie de l’appareil.
    • Définissez le paramètre de délai d’attente de GetGeopositionAsync. Il s’agit du délai pendant lequel votre application peut attendre la réception d’une position ou d’une erreur. Vous devez établir un bon compromis entre réactivité et précision, en fonction des besoins de votre application.
  • Utilisez une session de géolocalisation continue quand des mises à jour fréquentes de la position sont nécessaires. 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.

    Lors d’une demande de mise à jour de géolocalisation, vous pouvez spécifier la précision demandée par votre application en définissant la propriété DesiredAccuracy ou DesiredAccuracyInMeters. Vous devez également définir la fréquence à laquelle les mises à jour géographiques sont nécessaires, à l’aide de la propriété MovementThreshold ou ReportInterval.

    • Spécifiez 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.

      Sur Windows, lorsque vous définissez la propriété MovementThreshold, cela 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. Sur Windows Phone, la propriété MovementThreshold, ainsi que d’autres facteurs tels que l’estimation de la vitesse de déplacement, sert à régler la fréquence à laquelle l’emplacement est calculé dans le système pour prolonger l’autonomie de l’appareil.

    • Utilisez une valeur reportInterval 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é. Sur Windows, quand l’intervalle de rapport est égal à 0, l’application reçoit des événements selon la fréquence à laquelle la source de localisation la plus précise les envoie. Sur Windows Phone, l’application reçoit les mises à jour selon un intervalle qui dépend de la précision demandée par l’application.

      Les appareils 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.

    • 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.
      • Affectez à desiredAccuracy la valeur Default et utilisez uniquement un modèle d’appel à application unique pour réduire la consommation d’énergie si votre application utilise l’emplacement uniquement à des fins de ciblage publicitaire.

      Si votre application a des besoins spécifiques en matière de précision, vous pouvez utiliser la propriété DesiredAccuracyInMeters au lieu de DesiredAccuracy. Ceci est particulièrement utile sur Windows Phone, où la position peut généralement être obtenue grâce aux satellites ou aux points d’accès cellulaires ou Wi-Fi. La sélection d’une valeur de précision plus spécifique aide le système à identifier les technologies adéquates à utiliser avec le moindre coût énergétique lors de la fourniture de la position.

      Par exemple :

      • Si votre application obtient l’emplacement pour l’optimisation publicitaire, la météo, les actualités, et ainsi de suite, une précision de 5000 mètres suffit généralement.
      • Si votre application affiche les « meilleures affaires du coin », une précision de 300 mètres procure en général de bons résultats.
      • Si l’utilisateur souhaite obtenir des recommandations pour choisir un restaurant dans les environs, une précision de 100 mètres suffit.
      • Si l’utilisateur essaie de partager sa position, l’application doit demander une précision d’environ 10 mètres.
    • Utilisez la propriété Geocoordinate.accuracy si votre application a des exigences de précision spécifiques. Par exemple, 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.

  • Prenez 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 (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. Il est par exemple préférable d’éviter que d’autres tâches soient bloquées dans l’attente de l’exécution de l’appel à GetGeopositionAsync.

  • Prenez en compte le comportement en arrière-plan. Si une application Windows Runtime n’a pas le focus, elle ne reçoit pas les événements de mise à jour de localisation tant qu’elle est interrompue 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.

  • Utilisez efficacement les capteurs bruts et de fusion. Windows 8 prend en charge deux types de capteurs : bruts et de fusion.

    • Les capteurs bruts comprennent l’accéléromètre, le gyromètre et le magnétomètre.
    • Les capteurs de fusion comprennent l’orientation, l’inclinomètre et la boussole. Les capteurs de fusion obtiennent les données d’un ensemble de capteurs bruts.
    Les API Windows Runtime peuvent accéder à tous ces capteurs à l’exception du magnétomètre. Les capteurs de fusion sont plus précis et stables que les capteurs bruts, mais ils consomment plus. Utilisez le capteur adapté à vos besoins. Pour plus d’informations, voir Choix des capteurs appropriés.
  • Applies to Windows

Veille connectée:  Windows uniquement. Lorsque le PC est à 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.

Indications d’utilisation supplémentaires

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

Sur Windows, l’utilisateur peut désactiver la fonctionnalité de géolocalisation par l’intermédiaire 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. Sur Windows Phone, l’utilisateur peut désactiver la localisation dans l’application Paramètres. 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.

Représentations graphiques de localisation

Faites en sorte que votre application utilise Geocoordinate.accuracy 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. La localisation obtenue à partir du signal cellulaire offre une précision d’environ 300 mètres. 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.

Représentations textuelles 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

Pour les développeurs (HTML)
Détection de la géolocalisation (applications du Windows Store en JavaScript et HTML)
Windows.Devices.Geolocation
Recommandations en matière d’utilisation de périphériques sensibles
Pour les développeurs (XAML)
Détection de la géolocalisation (applications du Windows Store en C#/VB/C++ et XAML)
Windows.Devices.Geolocation
Recommandations en matière d’utilisation de périphériques sensibles
Exemples
Exemple de géolocalisation

 

 

Afficher:
© 2014 Microsoft