【问题标题】: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 中仍然会发生。

标签: ios objective-c addressbook abaddressbook ios-privacy-settings


【解决方案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 演示文稿中所述更改权限设置后不会调用过期处理程序块。

【讨论】:

    猜你喜欢
    • 2014-05-21
    • 2010-12-17
    • 1970-01-01
    • 2020-10-23
    • 2021-10-15
    • 2012-11-07
    • 2012-11-17
    • 1970-01-01
    相关资源
    最近更新 更多