Alertas de privacidade do iOS

Importante

O Visual Studio App Center está programado para ser desativado em 31 de março de 2025. Embora você possa continuar a usar o Visual Studio App Center até que ele seja totalmente desativado, há várias alternativas recomendadas para as quais você pode considerar a migração.

Saiba mais sobre linhas do tempo e alternativas de suporte.

Observação

Este artigo não aborda alertas criados com UIAlertViewController em aplicativos. Eles podem ser tratados diretamente por consultas de teste apropriadas. Em vez disso, este artigo é sobre alertas gerados pelo iOS que as consultas de interface do usuário padrão não podem lidar.

Enquanto um aplicativo iOS está sendo executado, o sistema operacional pode exibir alertas para o usuário em vários momentos, à medida que o aplicativo tenta ativar ou acessar Notificações por Push da Apple, Serviços de Localização, Contatos, Microfone ou Câmera do dispositivo e assim por diante, para solicitar permissão. Às vezes, esses pop-ups são chamados de alertas, Alertas do Sistema, Pop-ups do Sistema, Alertas do Springboard ou Caixas de Diálogo de Privacidade. Quando essas solicitações são aceitas, esse estado de aceitação é persistente para que o usuário geralmente não veja esse alerta novamente para esse aplicativo no dispositivo.

Quando o aplicativo for instalado pela primeira vez, esses alertas precisarão ser resolvidos. Os testes em execução localmente podem não encontrar alertas se as solicitações tiverem sido aceitas anteriormente.

Quando os testes são executados no Teste do App Center, eles são executados em dispositivos imaculados e os alertas são disparados quando o aplicativo tenta acessar serviços ou recursos protegidos.

O tratamento desses alertas no Teste do App Center varia de acordo com a estrutura de teste.

Xamarin.UITest e Calabash iOS

Xamarin.UITest e Calabash aceitam automaticamente alertas que eles conhecem. Os alertas conhecidos são baseados na correspondência de texto. Se você tiver um caso em que um alerta springboard não seja descartado, pesquise o título do alerta nos arquivos DeviceAgent.json.

$ cd DeviceAgent.iOS
$ git pull
$ find Server/Resources.xcassets -name "alerts.json" -exec grep -q "to access your location" {} \; -print
Server/Resources.xcassets/springboard-alerts/springboard-alerts-en_GB.dataset/alerts.json
Server/Resources.xcassets/springboard-alerts/springboard-alerts-en_AU.dataset/alerts.json
Server/Resources.xcassets/springboard-alerts/springboard-alerts-en.dataset/alerts.json

Se o aplicativo tiver alertas que não estão nesse arquivo, vá para ? > Entre em contato com o Suporte no site do App Center para adicioná-los. Se eles já estiverem nesse arquivo, pode haver algum problema com a configuração do dispositivo, que deve ser relatado como um bug para o Suporte de Teste do App Center.

Observação

Você pode observar DismissSpringboardAlerts() na API Xamarin.UITest. DismissSpringboardAlerts() é um método que O Xamarin.UITest usa internamente. Geralmente, não é necessário chamar DismissSpringboardAlerts() o código de teste do usuário.

XCUITest versus UIAutomation

Xamarin.UITest e Calabash usam uma das duas estruturas de teste da Apple para interagir com os dispositivos.

  • Se você estiver executando testes localmente, o Apple Test Framework será XCUITest.
  • Se você estiver executando testes no Teste do App Center, com o iOS 10 ou mais recente, o Apple Test Framework será XCUITest.
  • Se você estiver executando testes no Teste do App Center, com versões do iOS mais antigas do que o iOS 10, você está usando o UIAutomation da Apple.

O teste com UIAutomation requer um atraso no aplicativo antes que o primeiro Alerta ocorra para que a estrutura UIAutomation da Apple assuma o controle do aplicativo em teste. Se esse for um problema para seu aplicativo e testes, consulte Gerenciando alertas de privacidade: serviços de localização, APNS, contatos.

Calabash iOS

Além de lidar com alertas automaticamente, como Xamarin.UITest, o Calabash também permite gerenciar alertas manualmente.

  • Para marcar se um alerta estiver sendo exibido e consultar seus atributos, consulte /springboard-alertem QueryRoutes.m.
  • Para ignorar um alerta, tocando no botão com um determinado título, consulte /set-dismiss-springboard-alertem GestureRoutes.m.
  • Para ignorar alertas conhecidos e alternar a demissão automática, confira /dismiss-springboard-alerts e /set-dismiss-springboard-alerts-automatically no MetaRoutes.m. Uma exceção será gerada se /dismiss-spring-board-alerts for chamada e se deparar com um alerta desconhecido.

Este snippet de código calabash iOS mostra como usar estes métodos:

...
# Turn off automatic alert dismissal
device_agent.dismiss_springboard_alerts_manually!

# Do whatever triggers the alert, then wait for the alert
# that may or may not appear.
begin
  device_agent.wait_for_springboard_alert(10) # timeout is optional
  device_agent.dismiss_springboard_alert("OK")
rescue RuntimeError
   # Alert didn't appear, so there's nothing to do
end
...

# Turn automatic dismiss back on
dismiss_springboard_alerts_automatically!

Appium

Consulte a documentação do Appium para Alerta.

XCUITest

Consulte a documentação da Apple para Monitorar interrupções da interface do usuário.

Obtendo ajuda

Você sempre pode entrar em contato conosco por meio do ícone ? no canto superior direito. Não fornecemos suporte 24/7, mas responderemos assim que pudermos.

Se você quiser ajuda com uma execução de teste, navegue até a execução do teste em questão e copie a URL do navegador e cole-a na conversa de suporte. Uma URL de execução de teste se parece com algo como https://appcenter.ms/orgs/OrgName/apps/App-Name/test/runs/77a1c67e-2cfb-4bbd-a75a-eb2b4fd0a747.