有没有办法知道我的iOS应用程序被隐私设置更改杀死?

时间:2014-04-08 13:23:18

标签: ios settings privacy uiapplicationdelegate

我的iOS应用程序需要有权访问图片才能正常运行。

当我发现以下情况时,我正在测试我的应用如何响应隐私设置中的更改:每次我转到设置应用并更改我的应用的隐私设置(打开或关闭),我的应用在没有任何警告的情况下被杀死。

我在设备的控制台中找到了这些日志:

Apr  8 15:01:50 iPad Preferences[5924] <Warning>: ########### Quitting application (xxx) in response to privacy settings change.
Apr  8 15:01:50 iPad com.apple.launchd[1] (UIKitApplication:xxx[0xc7cb][6039]) <Notice>: (UIKitApplication:com.edupad.itoochdev[0xc7cb]) Exited: Killed: 9
Apr  8 15:01:50 iPad backboardd[30] <Warning>: Application 'UIKitApplication:xxx[0xc7cb]' exited abnormally with signal 9: Killed: 9

虽然我在我的app委托中实现applicationWillTerminate:,但在应用程序被杀之前似乎没有被调用。

我找不到任何相关的文档,说明在应用程序被杀之前我应该​​实现什么来获取通知。我有什么想法可以解决这个问题吗?

PS 1:我知道我可以实现applicationDidEnterBackground:但我希望在案例中提供不同的用户体验(A)用户只需快速切换到设置应用程序以更改隐私设置或(B)用户希望继续前进并暂时不回到应用

PS 2:如果您正在测试此类事情,请不要通过Xcode启动您的应用,否则您将使用sigkill崩溃。

1 个答案:

答案 0 :(得分:0)

通常,如果您希望在应用被杀之前保存状态或清理代码,则需要定义块beginBackgroundTaskWithExpirationHandler

您可以查看Apple的WWDC 2012文档,其中讨论了在iOS6以后更改隐私设置时会发生什么。简而言之,它表示在发送SIGKILL之前调用beginBackgroundTaskWithExpirationHandler,因此您可以在那里处理清理代码。

关于Stack Overflow的另一个讨论沿着相同的路线。如果有人能找到它并将其链接到这里会很有帮助。