Alerty dotyczące prywatności w systemie iOS
Ważne
Program Visual Studio App Center ma zostać wycofany 31 marca 2025 r. Chociaż możesz nadal używać programu Visual Studio App Center do momentu jego pełnego wycofania, istnieje kilka zalecanych alternatyw, do których można rozważyć migrację.
Dowiedz się więcej o osiach czasu pomocy technicznej i alternatywach.
Uwaga
W tym artykule nie są rozwiązywane alerty utworzone UIAlertViewController
w aplikacjach. Mogą być obsługiwane bezpośrednio przez odpowiednie zapytania testowe. Zamiast tego ten artykuł dotyczy alertów generowanych przez system iOS, których standardowe zapytania interfejsu użytkownika nie mogą obsługiwać.
Podczas wykonywania aplikacji systemu iOS system operacyjny może wyświetlać alerty dla użytkownika w różnych momentach, gdy aplikacja próbuje aktywować lub uzyskać dostęp do powiadomień Apple Push, usług lokalizacyjnych, kontaktów, mikrofonu urządzenia lub aparatu itd., aby zażądać uprawnień. Te okna podręczne są czasami nazywane alertami, alertami systemowymi, oknami podręcznymi systemu, alertami springboard lub oknami dialogowymi prywatności. Po zaakceptowaniu tych żądań stan akceptacji jest utrwalany, więc użytkownik zwykle nie będzie widzieć tego alertu ponownie dla tej aplikacji na urządzeniu.
Po pierwszym zainstalowaniu aplikacji należy rozwiązać te alerty. Testy uruchomione lokalnie mogą nie znajdować alertów, jeśli żądania zostały wcześniej zaakceptowane.
Po wykonaniu testów w usłudze App Center Test są one uruchamiane na nieskazitelnych urządzeniach i alertach, gdy aplikacja próbuje uzyskać dostęp do chronionych usług lub funkcji.
Obsługa tych alertów w narzędziu App Center Test różni się w zależności od platformy testowej.
Xamarin.UITest i Calabash dla systemu iOS
Narzędzia Xamarin.UITest i Calabash automatycznie akceptują alerty, o których wiedzą. Znane alerty są oparte na dopasowywaniu tekstu. Jeśli masz przypadek, w którym alert SpringBoard nie zostanie odrzucony, wyszukaj tytuł alertu w plikach 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
Jeśli aplikacja ma alerty, które nie są w tym pliku, przejdź do ? > Skontaktuj się z pomocą techniczną w witrynie internetowej Centrum aplikacji, aby je dodać. Jeśli znajdują się one już w tym pliku, może wystąpić problem z konfiguracją urządzenia, który powinien zostać zgłoszony jako usterka do pomocy technicznej testowej usługi App Center.
Uwaga
Możesz zauważyć DismissSpringboardAlerts()
w interfejsie API Xamarin.UITest. DismissSpringboardAlerts()
jest metodą używaną wewnętrznie przez platformę Xamarin.UITest. Zwykle nie ma potrzeby wywoływania DismissSpringboardAlerts()
kodu testowego użytkownika.
XCUITest a UIAutomation
Narzędzia Xamarin.UITest i Calabash używają jednej z dwóch platform testowych firmy Apple do interakcji z urządzeniami.
- Jeśli uruchamiasz testy lokalnie, platforma Apple Test Framework to XCUITest.
- Jeśli uruchamiasz testy w narzędziu App Center Test, w systemie iOS 10 lub nowszym, platforma Apple Test Framework to XCUITest.
- Jeśli uruchamiasz testy w narzędziu App Center Test, z wersjami systemu iOS starszymi niż iOS 10, używasz funkcji UIAutomation firmy Apple.
Testowanie za pomocą interfejsu użytkownikaAutomation wymaga opóźnienia w aplikacji przed wystąpieniem pierwszego alertu, aby platforma UIAutomation firmy Apple przejąła kontrolę nad testem aplikacji. Jeśli jest to problem z aplikacją i testami, zobacz Zarządzanie alertami prywatności: Usługi lokalizacji, APNS, Kontakty.
Calabash iOS
Oprócz automatycznego obsługi alertów, takich jak Xamarin.UITest, calabash umożliwia również ręczne zarządzanie alertami.
- Aby sprawdzić, czy alert jest wyświetlany i wykonywać zapytania dotyczące jego atrybutów, zobacz
/springboard-alert
w artykule QueryRoutes.m. - Aby odrzucić alert, dotykając przycisku o danym tytule, zobacz
/set-dismiss-springboard-alert
w pliku GestureRoutes.m. - Aby odrzucić znane alerty i przełączyć automatyczne odrzucanie, zobacz
/dismiss-springboard-alerts
i/set-dismiss-springboard-alerts-automatically
w metaRoutes.m. Wyjątek jest zgłaszany, jeśli/dismiss-spring-board-alerts
jest wywoływany i występuje nieznany alert.
Ten fragment kodu calabash systemu iOS pokazuje, jak używać następujących metod:
...
# 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
Zobacz dokumentację aplikacji Appium dotyczącą alertu.
XCUITest
Zapoznaj się z dokumentacją firmy Apple dotyczącą przerw w monitorowaniu interfejsu użytkownika.
Uzyskiwanie pomocy
Zawsze możesz skontaktować się z nami za pośrednictwem ikony ? w prawym górnym rogu. Nie zapewniamy pomocy technicznej 24/7, ale odpowiemy tak szybko, jak to możliwe.
Jeśli chcesz uzyskać pomoc dotyczącą przebiegu testowego, przejdź do danego przebiegu testu i skopiuj adres URL z przeglądarki i wklej go do konwersacji pomocy technicznej. Adres URL przebiegu testowego wygląda podobnie do https://appcenter.ms/orgs/OrgName/apps/App-Name/test/runs/77a1c67e-2cfb-4bbd-a75a-eb2b4fd0a747następującego: .