Avvisi sulla privacy iOS
Importante
Visual Studio App Center è previsto per il ritiro il 31 marzo 2025. Anche se è possibile continuare a usare Visual Studio App Center fino a quando non viene completamente ritirato, esistono diverse alternative consigliate che è possibile considerare la migrazione a.
Altre informazioni sulle sequenze temporali di supporto e sulle alternative.
Nota
Questo articolo non risolve gli avvisi creati con UIAlertViewController
nelle applicazioni. Possono essere gestiti direttamente dalle query di test appropriate. Invece questo articolo riguarda gli avvisi generati da iOS che le query dell'interfaccia utente standard non possono gestire.
Durante l'esecuzione di un'applicazione iOS, il sistema operativo può visualizzare avvisi all'utente in vari momenti quando l'applicazione tenta di attivare o accedere a Notifiche push Apple, Servizi di posizione, Contatti, microfono del dispositivo o fotocamera e così via per richiedere l'autorizzazione. Questi popup vengono talvolta chiamati avvisi, avvisi di sistema, popup di sistema, avvisi springboard o finestre di dialogo sulla privacy. Quando queste richieste vengono accettate, lo stato di accettazione viene mantenuto in modo che l'utente in genere non visualizzerà di nuovo l'avviso per tale app nel dispositivo.
Quando l'app viene installata per la prima volta, questi avvisi dovranno essere risolti. I test in esecuzione in locale potrebbero non trovare avvisi se le richieste sono state accettate in precedenza.
Quando i test vengono eseguiti in Test di App Center, vengono attivati su dispositivi e avvisi non puliti quando l'applicazione tenta di accedere a servizi o funzionalità protette.
La gestione di questi avvisi nel test di App Center varia in base al framework di test.
Xamarin.UITest e Calabash iOS
Xamarin.UITest e Calabash accettano automaticamente gli avvisi che conoscono. Gli avvisi noti si basano sulla corrispondenza del testo. Se si ha un caso in cui un avviso SpringBoard non viene ignorato, cercare il titolo dell'avviso nei file di 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 l'applicazione ha avvisi che non si trovano in tale file, passare a ? > Contattare il supporto tecnico nel sito Web di App Center per aggiungerli. Se sono già presenti in questo file, potrebbe verificarsi un problema con la configurazione del dispositivo, che dovrebbe essere segnalato come bug al supporto di test di App Center.
Nota
È possibile notare DismissSpringboardAlerts()
nell'API Xamarin.UITest. DismissSpringboardAlerts()
è un metodo che Xamarin.UITest usa internamente. In genere non è necessario chiamare DismissSpringboardAlerts()
nel codice di test dell'utente.
XCUITest e UIAutomation
Xamarin.UITest e Calabash usano uno dei due framework di test Apple per interagire con i dispositivi.
- Se si eseguono test in locale, Apple Test Framework è XCUITest.
- Se si eseguono test nel test di App Center, con iOS 10 o versione successiva, Apple Test Framework è XCUITest.
- Se si eseguono test nel test di App Center, con le versioni iOS precedenti a iOS 10, si usa l'interfaccia utente di AppleAutomation.
Il test con UIAutomation richiede un ritardo nell'applicazione prima che si verifichi il primo avviso per consentire al framework UIAutomation di Apple di controllare l'applicazione in fase di test. Se si tratta di un problema per l'applicazione e i test, vedere Gestione degli avvisi sulla privacy: Servizi di posizione, APNS, Contatti.
Calabash iOS
Oltre a gestire automaticamente gli avvisi come Xamarin.UITest, Calabash consente anche di gestire manualmente gli avvisi.
- Per verificare se viene visualizzato un avviso e eseguire query sugli attributi, vedere
/springboard-alert
in QueryRoutes.m. - Per ignorare un avviso, toccando il pulsante con un determinato titolo, vedere
/set-dismiss-springboard-alert
in GestureRoutes.m. - Per ignorare gli avvisi noti e attivare l'disattivazione automatica, vedere
/dismiss-springboard-alerts
e/set-dismiss-springboard-alerts-automatically
in MetaRoutes.m. Viene generata un'eccezione se/dismiss-spring-board-alerts
viene chiamata e viene generato un avviso sconosciuto.
Questo frammento di codice iOS di Calabash illustra come usare questi metodi:
...
# 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
Vedere la documentazione di Appium per Avviso.
XCUITest
Vedere la documentazione di Apple per il monitoraggio delle interruzioni dell'interfaccia utente.
Risorse della Guida
Puoi sempre contattarci tramite l'icona ? nell'angolo in alto a destra. Non viene fornito il supporto 24/7, ma risponderà non appena possibile.
Se si vuole aiutare con un'esecuzione di test, passare all'esecuzione del test in questione e copiare l'URL dal browser e incollarlo nella conversazione di supporto. Un URL di esecuzione di test è simile a https://appcenter.ms/orgs/OrgName/apps/App-Name/test/runs/77a1c67e-2cfb-4bbd-a75a-eb2b4fd0a747.