切换隐私设置将杀死应用程序

Posted

技术标签:

【中文标题】切换隐私设置将杀死应用程序【英文标题】:Toggling Privacy settings will kill the app 【发布时间】:2012-09-13 09:45:35 【问题描述】:

我有一个使用 iPhone 通讯录的应用。在 ios 6 中,第一次尝试时会提示用户进行联系人访问。此时,用户可以点击“允许”或“不允许”。问题是当用户将应用程序设置为后台时,然后导航到设置->隐私->联系人以切换我的应用程序的联系人隐私设置。切换后,我可以在控制台上看到我的应用:

应用程序 'UIKitApplication:com.myApp' 异常退出,信号 9: Killed: 9

我在 Apple 的文档中找不到任何相关信息。有谁知道防止这种情况的方法?这是设计好的吗?或者这是苹果的错误?

【问题讨论】:

我在联系人上遇到了类似的行为。我尝试了照片隐私设置,如果在应用程序处于后台时切换它,我的应用程序也会崩溃。考虑为您的问题添加额外的标签,“iphone”“地址簿”“objectivec”这可能会增加其可见性。 也发生在我身上。这似乎是一个 Apple 错误。 Apple Bug Reporter 问题 ID:12360315 我在联系人隐私方面看到了同样的问题。如果切换联系人的隐私设置,我的应用程序会在后台崩溃。在“iOS 中的新增功能”数据隐私部分中唯一提到了这一点。 “如果用户授予应用程序权限,系统随后会通知应用程序它需要重新加载或恢复数据。” link有人知道如何处理这个通知或者它叫什么吗? 在 ios8 中仍然会发生。 【参考方案1】:

操作系统发送一个不是崩溃的 SIGKILL - Apple 关于 iOS6 隐私的会话说:

如果权限更改,应用程序将退出。 如果已注册,则会调用后台任务到期处理程序 iOS 然后终止应用程序。

WWDC 2012 Session Videos: Privacy Support in iOS and OS X

过期处理程序:beginBackgroundTaskWithExpirationHandler

我没有办法解决这个问题。

【讨论】:

就是这样。感谢您的帖子。 App 在 iOS7 中也退出了。但请注意:如果在设备上正常运行应用程序 - 不是在 Xcode 调试中 - 应用程序将在权限更改后自动重新启动。用户不会看到发生了崩溃(当然,假设应用程序在重新启动时正确处理了所有事情)。 对于 位置权限(至少在 iOS 8 中),这似乎不正确? 我创建了一个带有过期处理程序的后台任务,但在更改权限设置时未调用该处理程序。有什么想法吗? 但是请记住,如果您的应用程序使用状态恢复,当用户切换回您的应用程序时,用户可能会觉得什么都没发生,因为您的应用程序恢复了它的状态。当然,如果用户禁用了您需要的功能,应用 UI 可能需要看起来不同。【参考方案2】:

在测试 beginBackgroundTaskWithExpirationHandler 之后,我可以说在 Apple 演示文稿中所述更改权限设置后不会调用过期处理程序块。

【讨论】:

以上是关于切换隐私设置将杀死应用程序的主要内容,如果未能解决你的问题,请参考以下文章

android系统下, 如何确定一个切换到后台的应用是被系统杀死的

在切换器中杀死一个应用程序,然后从本地通知启动它,在 didFinishLaunchingWithOptions 中,launchOptions 为 nil

每次我进入主屏幕时,Android都会杀死我的应用程序

有没有办法像我们在 iOS 中那样在 macOS 下将用户发送到应用程序的隐私设置?

如何在 Cordova PhoneGap 应用程序中打开设置 - > iPhone 的隐私

xamarin 更新标签被更改为不同的活动而被杀死