Compartilhar via


Alterações no comportamento da API para acesso e localização do Wi-Fi

Um resumo das alterações

Para gerenciar melhor quais aplicativos têm acesso à localização, o Windows está planejando adicionar novos controles de privacidade.

Atualmente, um aplicativo pode visualizar as redes Wi-Fi que podem ser encontradas nas proximidades do dispositivo que executa o aplicativo e usar essas redes para determinar a localização precisa do dispositivo. Mas, no futuro, o acesso às APIs que fornecem os identificadores BSSIDs necessários será restrito apenas aos aplicativos que o usuário configurou para ter permissão para acessar a localização precisa do usuário. Esse consentimento para usar o serviço de localização é configurado em Configurações>Privacidade e segurança>Localização. Ele pode ser definido no nível do dispositivo, no nível do usuário ou no nível do aplicativo individual. Depois que essa alteração for implementada, se o usuário não tiver dado o consentimento necessário, o sistema acionará um prompt avulso na primeira vez que um aplicativo for bloqueado.

Veja abaixo um exemplo do prompt do sistema:

Um exemplo da solicitação do sistema

Se você tiver um aplicativo que chama APIs Wi-Fi em wlanapi.h, namespace Windows.Devices.WiFi, NetworkInformation ou Geolocator, este tópico é para você. Ele detalha como você pode otimizar o comportamento do seu aplicativo para melhorar a experiência do usuário.

Quando as alterações ocorrerão?

As alterações ocorrerão inicialmente em uma versão do Windows Insider Preview e, posteriormente, em uma versão de recursos do Windows (uma versão comercial).

  • Em uma versão do Windows Insider Preview, as alterações entrarão em vigor pela primeira vez em outubro de 2023.
  • Você terá até o próximo lançamento de recursos do Windows no outono de 2024 para testar os cenários do seu aplicativo e fazer as alterações necessárias. Após essa data, os dispositivos Windows começarão a receber a atualização que contém a alteração de comportamento descrita acima.

Como mencionado, até mesmo os detalhes neste documento podem ser alterados antes que o recurso seja lançado comercialmente.

Como você pode se preparar para as alterações?

Há várias superfícies de API afetadas por essa alteração. E, como descreveremos daqui a pouco, algumas APIs começarão a retornar códigos de "acesso negado" sob certas condições. Portanto, recomendamos que você teste seu aplicativo para garantir que tudo esteja se comportando conforme o esperado, assim que seu aplicativo começar a receber esses valores de retorno de "acesso negado" nos computadores dos seus usuários.

Em suma, incentivamos você, como desenvolvedor de aplicativos, a fazer as seguintes alterações no código do seu aplicativo. Essas alterações ajudarão seus usuários (quando necessário) a conceder ao seu aplicativo o acesso à localização precisa do usuário, e para melhorar a experiência do usuário:

  1. Não faça uma chamada de verificação de Wi-Fi no seu aplicativo, a menos que seja estritamente necessário.
  2. Se você estiver usando uma verificação de Wi-Fi para fins de localização, substitua essa verificação por uma chamada de API de Localização.
  3. Assuma o controle de quando o prompt do sistema aparecerá para que o prompt seja exibido junto com seus cenários no aplicativo.
  4. Crie no seu aplicativo prompts que permitem que o usuário saiba que ele precisa ajustar as Configurações do Windows para conceder acesso.

Quais APIs serão afetadas?

Seu aplicativo será afetado se chamar qualquer uma destas APIs:

As APIs Wi-Fi no wlanapi.h do Win32 ou no Windows.Devices.WiFi do WinRT

  • Se o usuário não tiver dado consentimento ao aplicativo para acesso à localização precisa, na primeira vez que o aplicativo chamar uma API afetada, uma solicitação de sistema único por aplicativo será exibido se o processo estiver sendo executado no contexto do usuário e fora da pasta C:\Windows\System32. Dependendo de como seu aplicativo chama essas APIs, o prompt pode se manifestar de maneiras diferentes na interface do usuário do aplicativo.
  • Se o usuário não tiver dado consentimento para o acesso à localização precisa, as seguintes APIs Win32 no cabeçalho wlanapi.h retornarão ERROR_ACCESS_DENIED:
  • Se o usuário não tiver dado consentimento para o acesso à localização precisa, a API Windows.Devices.WiFi.WiFiAdapter.RequestAccessAsync retornará DeniedBySystem. E outras APIs no namespace Windows.Devices.WiFi gerarão uma exceção de "Acesso negado".
  • As chamadas para essas APIs serão exibidas na bandeja do sistema em uso e na atividade recente da localização.

WlanRegisterNotification também é afetado, dependendo dos argumentos que você passa para ele. Se o sinalizador WLAN_NOTIFICATION_SOURCE_MSM for definido em dwNotifSource, a funcionalidade do dispositivo wiFiControl será necessária (confira Declarações de funcionalidade do aplicativo). Se essa funcionalidade não for concedida, a função retornará ERROR_ACCESS_DENIED. Solicitar a funcionalidade do dispositivo wiFiControl exigirá consentimento do usuário em relação ao acesso ao local.

Ação necessária para as APIs Wi-Fi

Para criar uma experiência melhor para os usuários do aplicativo e garantir uma operação tranquila, você deve fazer as seguintes alterações no comportamento do aplicativo para controlar quando os prompts do sistema serão exibidos:

  • Se o seu aplicativo precisar saber a localização do dispositivo host, ele deverá chamar as APIs de Geolocalização, em vez de usar uma verificação de Wi-Fi.
  • Para fazer com que o prompt avulso do sistema do aplicativo seja exibido em um ponto adequado na experiência do usuário, seu aplicativo deve chamar WiFiAdapter.RequestAccessAsync. O processo deve estar sendo executado dentro do contexto do usuário e fora da C:\Windows\System32 pasta. A chamada deve ser alinhada a uma ação do usuário que exija Wi-Fi ou localização (resultando em taxas de consentimento mais altas do que avisar o usuário imediatamente após a instalação).
  • Seu aplicativo pode consultar seu status de acesso à localização usando a API AppCapability.CheckAccess com o recurso de dispositivo wiFiControl. Se o acesso a seguir acionar uma caixa de diálogo, a API retornará AppCapabilityAccessStatus.UserPromptRequired.
  • Para ser notificado e responder de acordo sempre que o usuário alterar o consentimento de localização, seu aplicativo deve se inscrever no evento AppCapability.AccessChanged.
  • Você deve adicionar uma experiência de aplicativo no aplicativo para o cenário de acesso negado. Nesse cenário, seu aplicativo deve redirecionar os usuários para as Configurações do Windows para que o usuário possa permitir que seu aplicativo acesse sua localização precisa. Você pode fazer isso passando a cadeia de caracteres "ms-settings:privacy-location" para o método Launcher.LaunchUriAsync.
  • Seu aplicativo deve limitar as solicitações a níveis aceitáveis, para que o ícone de localização em uso não seja exibido na bandeja do sistema com frequência.

O método WinRT NetworkInformation.GetLanIdentifiers

Ações necessárias para NetworkInformation

Confirme descrito acima para as APIs Wi-Fi, seu aplicativo deve solicitar/consultar o acesso, monitorar as alterações e direcionar os usuários para as Configurações.

O método WinRT Geolocator.RequestAccessAsync

Ações necessárias para Geolocalização

Para criar uma experiência melhor para os usuários do aplicativo e garantir uma operação tranquila, você deve fazer as seguintes alterações no comportamento do aplicativo para controlar quando os prompts do sistema serão exibidos:

  • Para fazer com que o prompt avulso do sistema do aplicativo seja exibido em um ponto adequado na experiência do usuário, seu aplicativo deve chamar Geolocator.RequestAccessAsync. O processo deve estar sendo executado dentro do contexto do usuário e fora da C:\Windows\System32 pasta. Normalmente, a chamada deve ser alinhada a uma ação do usuário que exija a localização precisa (resultando em taxas de consentimento mais altas do que avisar o usuário imediatamente após a instalação).
  • Para ser notificado e responder de acordo sempre que o usuário alterar o consentimento de localização, seu aplicativo deve se inscrever no evento Geolocator.StatusChangedevent e recuperar o status de permissão de localização da propriedade StatusChangedEventArgs.Status.
  • Você deve adicionar uma experiência de aplicativo no aplicativo para o cenário de acesso negado. Nesse cenário, seu aplicativo deve redirecionar os usuários para as Configurações do Windows para que o usuário possa permitir que seu aplicativo acesse sua localização precisa. Você pode fazer isso passando a cadeia de caracteres "ms-settings:privacy-location" para o método Launcher.LaunchUriAsync.

Como testar o aplicativo

  1. Use um computador Windows inscrito no Programa Windows Insider. Deve estar no canal Canary, build 25976 ou superior.
  2. Desative os serviços de localização em Configurações>Privacidade e segurança>Localização no Windows.
  3. Execute seu aplicativo que usa as informações de localização ou Wi-Fi.
  4. O resultado esperado é que você veja um prompt do sistema solicitando o consentimento de localização.

Como fazer comentários

Agradecemos seu apoio e seus comentários contínuos. Envie os relatórios de bugs por meio do aplicativo Hub de Comentários e indique seu aplicativo ou outros detalhes na descrição. A categoria é Dispositivos e Drivers>Serviços de Localização.

Categoria do hub de comentários