Удаление предупреждения о разрешении iOS для локальных уведомлений при запуске приложения в симуляторе
Я пытаюсь написать приемочное испытание в KIF в приложении, которое запрашивает разрешения на локальное уведомление довольно рано. К сожалению, из-за соображений безопасности iOS simulator невозможно автоматизировать прием уведомлений о разрешении iOS с использованием KIF. Per qaru.site/info/383642/... похоже, что есть способы отключить предупреждения о разрешении для местоположения, адресной книги, календаря и фотографий, но я не смог найти способ отключить разрешение на локальное уведомление. Я попробовал подход с правами доступа из связанного вопроса, но ни один из следующих ключей не работал:
kTCCServiceNotifications
kTCCServiceNotification
kTCCServiceLocalNotification
kTCCServiceLocalNotifications
Любые другие идеи? На данный момент я работаю над этим, изменяя свой производственный код, чтобы условно отключить локальные уведомления при запуске приемочных тестов, но в идеале мне бы не пришлось.
Ответы
Ответ 1
К сожалению, я не думаю, что в тесте автоматизации есть хороший способ сделать это. Я знаю, что даже сброса симулятора иногда недостаточно для разрешения reset. Я бы разработал ваши тесты, чтобы не тестировать системный вызов, а ваш собственный код приложения.
Один из способов протестировать различные функции, основанные на том, разрешает ли пользователь уведомления, - извлечь вызов для проверки разрешений, а затем отключить этот метод при тестировании. Этот метод будет наилучшей практикой, так как цель состоит не в том, чтобы проверить, работает ли iOS, но если ваш код приложения верен.
Ответ 2
Разрешение уведомления может быть подавлено путем предоставления разрешения в applicationState.plist:
- Запустите приложение на симуляторе и нажмите "ok" для всплывающих окон разрешения.
- перейдите к разделу "~/Library/Разработчик/CoreSimulator/Devices/{$ deviceId}/data/Library/BackBoard/applicationState.plist"
- Заменить applicationState.plist тестового симулятора пользовательского интерфейса с приведенным выше перед его загрузкой