Alertas de privacidad de iOS

Importante

Visual Studio App Center está programado para retirarse el 31 de marzo de 2025. Aunque puede seguir usando Visual Studio App Center hasta que se retire por completo, hay varias alternativas recomendadas a las que puede considerar la posibilidad de migrar.

Obtenga más información sobre las escalas de tiempo y las alternativas de soporte técnico.

Nota

En este artículo no se abordan las alertas creadas con UIAlertViewController en las aplicaciones. Las consultas de prueba adecuadas pueden controlarlas directamente. En su lugar, este artículo trata sobre las alertas generadas por iOS que las consultas de interfaz de usuario estándar no pueden controlar.

Mientras se ejecuta una aplicación iOS, el sistema operativo puede mostrar alertas al usuario en varias ocasiones a medida que la aplicación intenta activar o acceder a las notificaciones push de Apple, servicios de ubicación, contactos, micrófono del dispositivo o cámara, etc., para solicitar permiso. Estos elementos emergentes a veces se denominan alertas, alertas del sistema, elementos emergentes del sistema, alertas de Springboard o diálogos de privacidad. Cuando se aceptan estas solicitudes, ese estado de aceptación se conserva, por lo que el usuario normalmente no volverá a ver esa alerta para esa aplicación en el dispositivo.

Cuando la aplicación se instala por primera vez, estas alertas deberán abordarse. Es posible que las pruebas que se ejecuten localmente no encuentren alertas si las solicitudes se han aceptado previamente.

Cuando las pruebas se ejecutan en App Center Test, se ejecutan en dispositivos y alertas prístinas cuando la aplicación intenta acceder a servicios o características protegidos.

El control de estas alertas en App Center Test varía según el marco de pruebas.

Xamarin.UITest y Calabash iOS

Xamarin.UITest y Calabash aceptan automáticamente alertas sobre las que saben. Las alertas conocidas se basan en la coincidencia de texto. Si tiene un caso en el que no se descarta una alerta de SpringBoard, busque el título de la alerta en los archivos 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

Si la aplicación tiene alertas que no están en ese archivo, vaya a ? > Póngase en contacto con el soporte técnico en el sitio web de App Center para agregarlos. Si ya están en ese archivo, puede haber algún problema con la configuración del dispositivo, que se debe notificar como un error al soporte técnico de pruebas de App Center.

Nota

Es posible que observe DismissSpringboardAlerts() en la API de Xamarin.UITest. DismissSpringboardAlerts() es un método que Xamarin.UITest usa internamente. Por lo general, no es necesario llamar DismissSpringboardAlerts() al código de prueba del usuario.

XCUITest frente a UIAutomation

Xamarin.UITest y Calabash usan uno de los dos marcos de prueba de Apple para interactuar con los dispositivos.

  • Si ejecuta pruebas localmente, apple Test Framework es XCUITest.
  • Si está ejecutando pruebas en App Center Test, con iOS 10 o versiones posteriores, Apple Test Framework es XCUITest.
  • Si ejecuta pruebas en App Center Test, con versiones de iOS anteriores a iOS 10, usa UIAutomation de Apple.

Las pruebas con UIAutomation requieren un retraso en la aplicación antes de que se produzca la primera alerta para que el marco UIAutomation de Apple tome el control de la aplicación en prueba. Si se trata de un problema para la aplicación y las pruebas, consulte Managing Privacy Alerts: Location Services, APNS, Contacts.

Calabash iOS

Además de controlar alertas automáticamente como Xamarin.UITest, Calabash también permite administrar alertas manualmente.

  • Para comprobar si se muestra una alerta y consultar sus atributos, consulte /springboard-alerten QueryRoutes.m.
  • Para descartar una alerta, tocando el botón con un título determinado, consulte /set-dismiss-springboard-alertEn GestureRoutes.m.
  • Para descartar alertas conocidas y alternar el descarte automático, consulte /dismiss-springboard-alerts y /set-dismiss-springboard-alerts-automatically en MetaRoutes.m. Se genera una excepción si /dismiss-spring-board-alerts se llama a y aparece en una alerta desconocida.

Este fragmento de código de Calabash para iOS muestra cómo usar estos 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 la documentación de Appium para Alerta.

XCUITest

Consulte la documentación de Apple para supervisar las interrupciones de la interfaz de usuario.

Ayuda

Siempre puede ponerse en contacto con nosotros a través del icono ? en la esquina superior derecha. No proporcionamos soporte técnico 24/7, pero responderemos tan pronto como podamos.

Si desea ayuda con una ejecución de prueba, vaya a la ejecución de pruebas en cuestión y copie la dirección URL del explorador y péguela en la conversación de soporte técnico. Una dirección URL de ejecución de prueba tiene un aspecto similar a https://appcenter.ms/orgs/OrgName/apps/App-Name/test/runs/77a1c67e-2cfb-4bbd-a75a-eb2b4fd0a747.