Compartir a través de


Cambios en el comportamiento de la API para la ubicación y el acceso Wi-Fi

Resumen de los cambios

Para administrar mejor qué aplicaciones tienen acceso a la ubicación, Windows planea agregar nuevos controles de privacidad.

Actualmente, una aplicación puede ver las redes Wi-Fi que se encuentran en las proximidades del dispositivo que ejecuta la aplicación y usar esas redes para determinar la ubicación precisa del dispositivo. Sin embargo, en el futuro, el acceso a las API que proporcionan los identificadores de conjunto de servicios básicos (BSSID) necesarios se restringirá solo a las aplicaciones que el usuario ha configurado como permitidas para acceder a la ubicación precisa del usuario. Ese consentimiento para usar el servicio de Ubicación se configura en Windows: Configuración>Privacidad y seguridad>Ubicación. Se puede establecer en el nivel de dispositivo, el nivel de usuario o el nivel de aplicación individual. Una vez implementado este cambio, si el usuario no ha dado el consentimiento necesario, el sistema desencadenará una solicitud única la primera vez que se bloquee una aplicación.

Este es un ejemplo del símbolo del sistema:

Ejemplo del símbolo del sistema

Si tiene una aplicación que llama a las API de Wi-Fi en wlanapi.h o el espacio de nombres de Windows.Devices.WiFi, o NetworkInformation, o Geolocator, este tema es para ti. Detalla cómo puede optimizar el comportamiento de la aplicación para mejorar la experiencia del usuario.

¿Cuándo se realizarán los cambios?

Los cambios se realizarán inicialmente en una versión de Windows Insider Preview y, después, en una versión de características de Windows (una versión comercial).

  • En una versión de Windows Insider Preview, los cambios surtirán efecto en octubre de 2023.
  • A continuación, tendrá hasta la siguiente versión de características de Windows en otoño de 2024 para probar los escenarios de la aplicación y para realizar los cambios necesarios. Después de esa fecha, los dispositivos Windows comenzarán a obtener la actualización que contiene el cambio de comportamiento descrito anteriormente.

Como se mencionó, incluso los detalles de este documento podrían cambiar antes de que la característica se publique comercialmente.

¿Cómo puede prepararse para los cambios?

Hay varias superficies de API afectadas por este cambio. Y, como describiremos en un momento, algunas API comenzarán a devolver códigos de "acceso denegado" en determinadas condiciones. Por lo tanto, se recomienda probar la aplicación para asegurarse de que todo se comporta según lo previsto una vez que la aplicación empiece a recibir esos valores devueltos de "acceso denegado" en las máquinas de los usuarios.

En resumen, te animamos como desarrollador de aplicaciones a realizar los siguientes cambios en el código de la aplicación. Estos cambios ayudarán a los usuarios (cuando sea necesario) a conceder a la aplicación acceso a la ubicación precisa del usuario; y para mejorar la experiencia del usuario:

  1. No realice una llamada de examen Wi-Fi dentro de la aplicación a menos que sea estrictamente necesario.
  2. Si usa un examen de Wi-Fi con fines de ubicación, reemplace ese examen por una llamada a la API de ubicación.
  3. Tome el control de cuándo aparece el símbolo del sistema para que se muestre el mensaje junto con los escenarios en la aplicación.
  4. Compile en las solicitudes de la aplicación que indiquen al usuario que necesitan ajustar la Configuración de Windows para conceder acceso.

¿Qué API se verán afectadas?

La aplicación se verá afectada si llama a cualquiera de estas API:

Las API de Wi-Fi en wlanapi.h de Win32 o en el WinRT Windows.Devices.WiFi

  • Si el usuario no ha dado su consentimiento a la aplicación para el acceso preciso a la ubicación, la primera vez que la aplicación llame a una API afectada se mostrará una solicitud del sistema de una sola vez por aplicación si el proceso se ejecuta dentro del contexto del usuario y fuera de la carpeta C:\Windows\System32. Dependiendo de cómo la aplicación llama a esas API, el símbolo del sistema podría manifestarse de maneras diferentes en la interfaz de usuario de la aplicación.
  • Si el usuario no ha dado consentimiento para el acceso preciso a la ubicación, las siguientes API de Win32 en el encabezado wlanapi.h devolverán ERROR_ACCESS_DENIED:
  • Si el usuario no ha dado su consentimiento para obtener acceso preciso a la ubicación, la API Windows.Devices.WiFi.WiFiAdapter.RequestAccessAsync devolverá DeniedBySystem. Y otras API del espacio de nombres de Windows.Devices.WiFi espacio de nombres de Windows.Devices.WiFi producirán una excepción de "Acceso denegado".
  • Las llamadas a estas API aparecerán en la bandeja del sistema en uso y la actividad reciente de ubicación.

WlanRegisterNotification también se ve afectado, en función de los argumentos que se le pasen. Si la marca WLAN_NOTIFICATION_SOURCE_MSM está establecida en dwNotifSource, se requerirá la funcionalidad de dispositivo wiFiControl (consulte Declaraciones de funcionalidades de las aplicaciones). Si no se concede esa funcionalidad, la función devuelve ERROR_ACCESS_DENIED. Solicitar la funcionalidad del dispositivo wiFiControl requerirá el consentimiento del usuario con respecto al acceso a la ubicación.

Acción necesaria para las API de Wi-Fi

Para crear una mejor experiencia para los usuarios de la aplicación y garantizar un funcionamiento sin problemas, debes realizar los siguientes cambios en el comportamiento de la aplicación para controlar cuándo se muestran las indicaciones del sistema:

  • Si la aplicación necesita conocer la ubicación del dispositivo host, debe llamar a las API de geolocalización en lugar de usar un examen de Wi-Fi.
  • Para que el sistema de una sola vez por aplicación se muestre en un punto adecuado de la experiencia del usuario, la aplicación debe llamar a WiFiAdapter.RequestAccessAsync. El proceso debe ejecutarse dentro del contexto del usuario y fuera de la carpeta C:\Windows\System32. La llamada debe alinearse con una acción de usuario que requiera Wi-Fi o ubicación (lo que da lugar a tasas de consentimiento más altas que pedíselo al usuario inmediatamente después de la instalación).
  • La aplicación puede consultar su estado de acceso de ubicación mediante la API AppCapability.CheckAccess con la funcionalidad del dispositivo wiFiControl. Si el siguiente acceso desencadena un cuadro de diálogo, la API devolverá AppCapabilityAccessStatus.UserPromptRequired.
  • Para recibir notificaciones y responder en consecuencia siempre que el usuario cambie el consentimiento de la ubicación, la aplicación debe suscribirse al evento AppCapability.AccessChanged.
  • Debe agregar una experiencia de aplicación en la aplicación para el escenario de acceso denegado. En ese escenario, la aplicación debe redirigir a los usuarios a Windows Configuración para que el usuario pueda permitir que la aplicación acceda a su ubicación precisa. Para ello, pase la cadena "ms-settings:privacy-location" al método Launcher.LaunchUriAsync.
  • La aplicación debe limitar las solicitudes a niveles razonables, de modo que el icono de ubicación en uso no aparezca con frecuencia en la bandeja del sistema.

Método WinRT NetworkInformation.GetLanIdentifiers

Acción necesaria para NetworkInformation

De la misma manera que se ha descrito anteriormente para las API de Wi-Fi, la aplicación debe solicitar o consultar el acceso, supervisar los cambios y dirigir a los usuarios a Configuración.

El método WinRT Geolocator.RequestAccessAsync

Acción necesaria para la geolocalización

Para crear una mejor experiencia para los usuarios de la aplicación y garantizar un funcionamiento sin problemas, debes realizar los siguientes cambios en el comportamiento de la aplicación para controlar cuándo se muestran las indicaciones del sistema:

  • Para que el sistema de una sola vez por aplicación se muestre en un punto adecuado de la experiencia del usuario, la aplicación debe llamar a Geolocator.RequestAccessAsync. El proceso debe ejecutarse dentro del contexto del usuario y fuera de la carpeta C:\Windows\System32. La llamada normalmente debe alinearse con una acción de usuario que requiera ubicación precisa (lo que da lugar a tasas de consentimiento más altas que pedíselo al usuario inmediatamente después de la instalación).
  • Para recibir notificaciones y responder en consecuencia siempre que el usuario cambie el consentimiento de la ubicación, la aplicación debe suscribirse al evento Geolocator.StatusChangedevent y recuperar el estado del permiso de ubicación de la propiedad StatusChangedEventArgs.Status.
  • Debe agregar una experiencia de aplicación en la aplicación para el escenario de acceso denegado. En ese escenario, la aplicación debe redirigir a los usuarios a Windows Configuración para que el usuario pueda permitir que la aplicación acceda a su ubicación precisa. Para ello, pase la cadena "ms-settings:privacy-location" al método Launcher.LaunchUriAsync.

Cómo probar la aplicación

  1. Usa un PC Windows inscrito en el Programa Windows Insider. Debe estar en el canal Canary, compilación 25976 o posterior.
  2. Desactive los servicios de ubicación en Windows Configuración>Privacidad y seguridad>Ubicación.
  3. Ejecute la aplicación que usa información de ubicación o Wi-Fi.
  4. El resultado esperado es que ve un mensaje del sistema que le pide el consentimiento de la ubicación.

Cómo enviar comentarios

Agradecemos su apoyo y comentarios continuos. Envíe los informes de errores a través de la aplicación del Centro de opiniones e indique su aplicación u otros detalles en la descripción. La categoría es Dispositivos y controladores>Servicios de ubicación.

Categoría del centro de opiniones