在模拟器中运行应用程序时,删除本地通知的iOS权限警报

我试图在KIF上写一个接受testing,在很早的时候要求获得本地通知的权限。 不幸的是,由于iOS模拟器的安全性原因,使用KIF无法自动接受iOS权限警报 。 根据https://stackoverflow.com/a/28443743/62它看起来像有办法禁用位置,地址簿,日历和照片权限提醒,但我找不到方法来禁用本地通知权限。 我尝试了链接问题的授权方法,但以下任何一个键都不起作用:

kTCCServiceNotifications kTCCServiceNotification kTCCServiceLocalNotification kTCCServiceLocalNotifications 

任何其他的想法? 现在我正在通过更改我的生产代码来解决这个问题,以便在验收testing运行时有条件地禁用本地通知,但理想情况下我不需要。

不幸的是,我不认为在自动化testing中有这样做的好方法。 我知道,即使重置模拟器有时不足以重置权限。 我会devise你的testing不testing系统调用,但你自己的应用程序代码。

根据用户是否允许通知来testing不同function的一种方法是提取调用以检查权限,然后在testing中存储此方法。 这个方法将是最好的做法,因为目标不是testingiOS是否工作,而是如果你的应用程序代码是正确的。

通知权限可以通过在applicationState.plist中授予权限来取消:

  • 在模拟器上运行您的应用程序,然后点击“确定”以获取任何权限popup窗口
  • 导航到“〜/ Library / Developer / CoreSimulator / Devices / {$ deviceId} /data/Library/BackBoard/applicationState.plist”
  • 将UItesting模拟器的applicationState.plistreplace为上面的那个,然后再引导它