在 iOS 应用程序之外更改日历权限时崩溃

Posted

技术标签:

【中文标题】在 iOS 应用程序之外更改日历权限时崩溃【英文标题】:Crash when Calendar permission changes outside iOS app 【发布时间】:2018-03-01 11:02:29 【问题描述】:

我正在将 EventKit 集成到 ios 应用程序中,但我遇到了无法调试的奇怪崩溃。

在应用程序中,我有一个UISwitch,它启用了与日历相关的功能。当开关第一次打开时,应用程序请求日历授权,这工作正常。如果您随后切换到“设置”应用程序(应用程序仍在后台运行)并禁用日历授权,则应用程序在后台崩溃并显示Message from debugger: Terminated due to signal 9,而没有任何进一步的信息。这发生在模拟器(iPhone X、iOS 11.2;iPhone 6s、iOS 11.0.1)和我的手机(iPhone X、iOS 11.2.6)上。

反之亦然:当未授予授权 (.denied) 时,我将用户重定向到“设置”应用。当用户随后打开日历授权时,应用程序崩溃并显示相同的消息。

示例代码:https://gist.github.com/rbresjer/4e971c0650e63a53bd81056e962c121b

我的项目包含一个有效的 Info.plist 文件,其中包含日历使用的相关隐私描述。

有什么想法吗?

【问题讨论】:

您是否在 plist 中设置了“隐私 - 日历使用说明”? App crashes on enabling Camera Access from Settings iOS 8的可能重复 ***.com/questions/43974752/…的可能重复 【参考方案1】:

当您在设置中更改其权限时,这是 iOS 的预期行为。如果应用程序已打开,系统将发送“来自调试器的消息:由于信号 9 而终止”,用户必须再次手动启动应用程序。

而且我相信关于 SO 有很多类似的问题。 像这样:App crashes in background while changing permission - swift

【讨论】:

以上是关于在 iOS 应用程序之外更改日历权限时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

更改日历隐私时 iOS 7 应用程序崩溃

当用户更改联系人访问权限时,应用程序在 iOS 6 中崩溃

Android Marshmallow:在运行时更改权限会使应用程序崩溃

React Native ios 应用程序在 xcode 之外运行时崩溃,并且在 19.88 秒后无法创建场景错误

请求在 iOS 11 中使用 iPhone 麦克风的权限时应用程序崩溃

iOS 模拟器在麦克风权限请求时崩溃