Удаление оповещения о разрешении iOS для локальных уведомлений при запуске приложения в симуляторе

Я пытаюсь написать приемочный тест в KIF для приложения, которое запрашивает разрешения на локальные уведомления. довольно рано. К сожалению, из-за соображений безопасности симулятора iOS невозможно автоматизировать прием предупреждений о разрешениях iOS с помощью KIF. . На https://stackoverflow.com/a/28443743/62 похоже, что есть способы отключить оповещения о разрешениях для местоположение, адресная книга, календарь и фотографии, но я не смог найти способ отключить разрешение на локальные уведомления. Я попробовал подход к предоставлению прав из связанного вопроса, но ни один из следующих ключей не работал:

kTCCServiceNotifications
kTCCServiceNotification
kTCCServiceLocalNotification
kTCCServiceLocalNotifications

Любые другие идеи? На данный момент я работаю над этим, изменяя свой производственный код, чтобы условно отключить локальные уведомления при выполнении приемочных тестов, но в идеале мне не пришлось бы этого делать.


person Liron Yahdav    schedule 02.05.2015    source источник
comment
быстрый вопрос, где вы нашли эти ключи? есть ссылка?   -  person Just a coder    schedule 03.05.2015
comment
Я не нашел эти ключи, я угадал их, но они не работают. Если вы посмотрите на groups.google.com/forum/#!topic/ kif-framework/xayP4VVBPyg вы увидите, какие ключи работают.   -  person Liron Yahdav    schedule 09.07.2015


Ответы (2)


К сожалению, я не думаю, что в автоматизированном тесте есть хороший способ сделать это. Я знаю, что иногда даже сброса симулятора недостаточно для сброса разрешений. Я бы разработал ваши тесты так, чтобы тестировать не системный вызов, а код вашего собственного приложения.

Один из способов протестировать различные функции в зависимости от того, разрешает ли пользователь уведомления, — извлечь вызов для проверки разрешений, а затем заглушить этот метод при тестировании. Этот метод был бы наилучшей практикой, поскольку цель состоит не в том, чтобы проверить, работает ли iOS, а в том, чтобы проверить правильность кода вашего приложения.

person Christian Di Lorenzo    schedule 16.07.2015

Разрешение на уведомление можно подавить, предоставив разрешение в applicationState.plist:

  • Запустите свое приложение на симуляторе и нажмите «ОК» для любых всплывающих окон с разрешениями.
  • перейдите к "~/Library/Developer/CoreSimulator/Devices/{$deviceId}/data/Library/BackBoard/applicationState.plist"
  • Замените applicationState.plist симулятора тестирования пользовательского интерфейса на приведенный выше перед его загрузкой.
person Sylvia    schedule 16.02.2016