Удаление предупреждения о разрешении 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 тестового симулятора пользовательского интерфейса с приведенным выше перед его загрузкой