Modifications apportées au comportement de l’API pour l’accès Wi-Fi et la localisation

Remarque

Certaines informations portent sur la préversion du produit, qui est susceptible d’être en grande partie modifié avant sa commercialisation. Microsoft n’offre aucune garantie, expresse ou implicite, concernant les informations fournies ici.

Important

La fonctionnalité décrite dans cette rubrique est disponible dans les versions préliminaires de Windows Insider Preview.

Résumé des modifications

Pour mieux gérer les applications qui ont accès à la localisation, Windows prévoit d’ajouter de nouveaux contrôles de confidentialité.

Actuellement, une application peut afficher les réseaux Wi-Fi à trouver à proximité de l’appareil exécutant l’application et utiliser ces réseaux pour déterminer la localisation précise de l’appareil. Mais à l’avenir, l’accès aux API qui fournissent les identificateurs BSSID (Basic Service Set Identifiers) nécessaires sera limité uniquement aux applications que l’utilisateur a configurées comme étant autorisées à accéder à la localisation précise de l’utilisateur. Ce consentement pour utiliser le service Localisation est configuré dans les paramètres Paramètres>Confidentialité et sécurité>Localisation. Il peut être défini au niveau de l’appareil, du niveau utilisateur ou de l’application individuelle. Une fois cette modification implémentée, si l’utilisateur n’a pas donné le consentement requis, le système déclenche une invite unique la première fois qu’une application est bloquée.

Voici un exemple de l’invite du système :

Un exemple de l’invite du système

Si vous disposez d’une application qui appelle des API Wi-Fi dans l’espace de noms wlanapi.h ou Windows.Devices.WiFi, NetworkInformationou Geolocator, cette rubrique est pour vous. Cela détaille la façon dont vous pouvez optimiser le comportement de votre application pour améliorer l’expérience utilisateur.

Quand les modifications auront-elles lieu ?

Les modifications auront lieu initialement dans une version Windows Insider Preview, puis ultérieurement dans une version de fonctionnalité Windows (une version commerciale).

  • Dans une version Windows Insider Preview, les modifications prendront effet en octobre 2023.
  • Vous aurez ensuite jusqu’à la version suivante de la fonctionnalité Windows à l’automne 2024 pour tester les scénarios de votre application et apporter les modifications nécessaires. Après cette date, les appareils Windows commencent à obtenir la mise à jour qui contient le changement de comportement décrit ci-dessus.

Comme mentionné, même les détails de ce document peuvent changer avant la publication commerciale de la fonctionnalité.

Comment préparer les modifications ?

Plusieurs surfaces d’API sont affectées par cette modification. Et, comme nous allons le décrire dans un instant, certaines API commencent à retourner des codes « accès refusés » dans certaines conditions. Nous vous recommandons donc de tester votre application pour vous assurer que tout se comporte comme prévu une fois que votre application commence à recevoir ces valeurs de retour « accès refusé » sur les machines de vos utilisateurs.

En bref, nous vous encourageons en tant que développeur d’applications à apporter les modifications suivantes au code de votre application. Ces modifications aideront vos utilisateurs (le cas échéant) à accorder à votre application l’accès à la localisation précise de l’utilisateur ; et pour améliorer l’expérience utilisateur :

  1. N’effectuez pas d’appel d’analyse Wi-Fi au sein de votre application, sauf si strictement nécessaire.
  2. Si vous utilisez une analyse Wi-Fi à des fins de localisation, veillez à remplacer cette analyse par un appel de d’API de Localisation.
  3. Contrôlez le moment où l'invite du système apparaît pour qu'elle s'affiche en même temps que vos scénarios dans l’application.
  4. Générez dans votre application des invites qui permettent à l’utilisateur de savoir qu’il doit ajuster les paramètres de Windows afin d’accorder l’accès.

Quelles API seront affectées ?

Votre application est affectée s’il appelle l’une de ces API :

Les API Wi-Fi dans le fichier wlanapi.h de Win32 ou dans Windows.Devices.WiFi de WinRT

  • Si l’utilisateur n’a pas donné le consentement de votre application à un accès précis à la localisation, la première fois que votre application appelle une API affectée, une invite du système unique par application s’affiche si le processus s’exécute dans le contexte de l’utilisateur ou en dehors du dossier C:\Windows\System32. Selon la façon dont votre application appelle ces API, l’invite peut se manifester de différentes façons dans l’interface utilisateur de votre application.
  • Si l’utilisateur n’a pas donné son consentement à un accès précis de la localisation, les API Win32 suivantes dans l’en-tête wlanapi.h retournent ERROR_ACCESS_DENIED:
  • Si l’utilisateur n’a pas donné son consentement à un accès précis à la localisation, l’API Windows.Devices.WiFi.WiFiAdapter.RequestAccessAsync retourne DeniedBySystem. Et d’autres API de l’espace de noms Windows.Devices.WiFi l’espace de noms Windows.Devices.WiFi lève une exception « Accès refusé ».
  • Les appels à ces API s’affichent dans la barre d’état système en cours d’utilisation et l’activité récente de localisation.

WlanRegisterNotification est également affecté, en fonction des arguments que vous lui transmettez. Si l’indicateur WLAN_NOTIFICATION_SOURCE_MSM est défini dans dwNotifSource, la fonctionnalité d’appareil wiFiControl est requise (consultez déclarations de fonctionnalité d’application). Si cette fonctionnalité n’est pas accordée, la fonction retourne ERROR_ACCESS_DENIED. La requête de la fonctionnalité d’appareil wiFiControl nécessite le consentement de l’utilisateur en ce qui concerne l’accès à la localisation.

Action nécessaire pour les API Wi-Fi

Pour créer une meilleure expérience pour les utilisateurs de votre application et pour garantir une opération fluide, vous devez apporter les modifications suivantes au comportement de votre application afin de contrôler le moment où les invites système sont affichées :

  • Si votre application doit connaître la localisation de l’appareil hôte, elle doit appeler les API de géolocalisation, plutôt que d’utiliser une analyse Wi-Fi.
  • Pour que l’invite système unique par application s’affiche à un point approprié dans l’expérience utilisateur, votre application doit appeler WiFiAdapter.RequestAccessAsync. Le processus doit s’exécuter dans le contexte de l’utilisateur et en dehors du dossier C:\Windows\System32. L’appel doit s’aligner sur une action utilisateur qui nécessite le Wi-Fi ou la localisation (ce qui entraîne des taux de consentement plus élevés que l’invite de l’utilisateur immédiatement après l’installation).
  • Votre application peut interroger son état d’accès à la localisation à l’aide de l’API AppCapability.CheckAccess avec la fonctionnalité d’appareil wiFiControl . Si l’accès suivant déclenche une boîte de dialogue, l’API retourne AppCapabilityAccessStatus.UserPromptRequired.
  • Pour être averti et répondre en conséquence chaque fois que l’utilisateur modifie le consentement de la localisation, votre application doit s’abonner à l’événement AppCapability.AccessChanged .
  • Vous devez ajouter une expérience d’application dans l’application pour le scénario de refus d’accès. Dans ce scénario, votre application doit rediriger les utilisateurs vers les Paramètres Windows afin que l’utilisateur puisse autoriser votre application à accéder à sa localisation précise. Pour ce faire, transmettez la chaîne « ms-settings :privacy-location » à la méthode Launcher.LaunchUriAsync.
  • Votre application doit limiter les demandes à des niveaux raisonnables afin que l’icône de localisation dans l’utilisation ne s’affiche pas fréquemment dans la barre d’état système.

Méthode WinRT NetworkInformation.GetLanIdentifiers

  • Si l’utilisateur n’a pas donné son consentement à un accès précis à la localisation, l’API Windows.Networking.Connectivity.NetworkInformation.GetLanIdentifiers ne retourne pas les informations relatives au WLAN.
  • Les appels à cette API s’affichent dans la barre d’état système en cours d’utilisation et l’activité récente de localisation.

Action nécessaire pour NetworkInformation

De la même façon que décrit ci-dessus pour les API Wi-Fi, votre application doit demander/interroger l’accès, surveiller les modifications et diriger les utilisateurs vers Paramètres.

Méthode Geolocator.RequestAccessAsync WinRT

Action nécessaire pour la géolocalisation

Pour créer une meilleure expérience pour les utilisateurs de votre application et pour garantir une opération fluide, vous devez apporter les modifications suivantes au comportement de votre application afin de contrôler le moment où les invites système sont affichées :

  • Pour que l’invite système unique par application s’affiche à un point approprié dans l’expérience utilisateur, votre application doit appeler Geolocator.RequestAccessAsync. Le processus doit s’exécuter dans le contexte de l’utilisateur et en dehors du dossier C:\Windows\System32. L’appel doit généralement s’aligner sur une action utilisateur qui nécessite une localisation précise (ce qui entraîne des taux de consentement plus élevés que l’invite de l’utilisateur immédiatement après l’installation).
  • Pour être averti et répondre en conséquence chaque fois que l’utilisateur modifie le consentement de la localisation, votre application doit s’abonner à l’événement Geolocator.StatusChangedevent et récupérer l’état de l’autorisation de localisation à partir de la propriété StatusChangedEventArgs.Status.
  • Vous devez ajouter une expérience d’application dans l’application pour le scénario de refus d’accès. Dans ce scénario, votre application doit rediriger les utilisateurs vers les Paramètres Windows afin que l’utilisateur puisse autoriser votre application à accéder à sa localisation précise. Pour ce faire, transmettez la chaîne « ms-settings :privacy-location » à la méthode Launcher.LaunchUriAsync.

Guide pratique pour tester votre application

  1. Utilisez un PC Windows inscrit au programme Windows Insider. Il doit se trouver sur le canal Canary, build 25976 ou version ultérieure.
  2. Désactivez les services de localisation dans les paramètres Windows Paramètres>Confidentialité et sécurité>Localisation.
  3. Exécutez votre application qui utilise des informations de localisation ou Wi-Fi.
  4. Le résultat attendu est que vous voyez une invite système vous invitant à entrer le consentement de la localisation.

Comment envoyer des commentaires

Nous apprécions votre soutien continu et vos commentaires. Envoyez des rapports de bogues via l’application Feedback Hub, et indiquez votre application ou d’autres détails dans la description. La catégorie est Périphériques et Pilotes>Services de localisation.

Catégorie du hub de commentaires