在检测到隐私设置更改时让应用程序自行重启

Posted

技术标签:

【中文标题】在检测到隐私设置更改时让应用程序自行重启【英文标题】:Having app restart itself when it detects change to privacy settings 【发布时间】:2013-04-02 13:56:59 【问题描述】:

我有一个使用ALAssets 框架来访问用户照片库的应用程序。我编写了一些代码来检测应用程序是否有权访问照片库,如果没有,我会显示一条警告消息,告诉用户在设置中为应用程序打开位置服务。

问题是,当用户手动更改隐私设置然后重新打开应用程序时,ios 会强制应用程序因 SIGKILL 崩溃。

我注意到另一个应用处理此问题的方式是通过某种方式检测隐私设置的更改,并在用户下次打开它时强制该应用重新启动。有谁知道如何做到这一点?

【问题讨论】:

【参考方案1】:

您误解了正在发生的事情。您的应用程序没有崩溃(尽管如果您使用调试器运行应用程序,它可能会出现)。

当您切换到“设置”应用(并且您的应用在后台暂停)并更改隐私设置时,暂停的应用将被终止。当您切换回您的应用程序时,它只是再次启动。这与您的应用因任何其他原因被杀死没有什么不同。

您可以自行编写应用程序的代码以通过恢复其先前状态来处理此问题。您谈论的另一个应用程序只是将用户返回到以前的状态。许多应用程序都这样做。它与因隐私更改而被杀死无关。该应用程序会在因任何原因被杀死时恢复状态。

【讨论】:

谢谢。当我从 xCode 运行应用程序时,就像你说的那样,它看起来像是在冻结。但是,当我从手机上运行应用程序,然后更改设置时,应用程序会在下次启动时自行重启,而不是冻结。 这是模拟器特有的吗?我尝试更改设备上的 Twitter 访问权限,但并没有导致我的 Twitter 应用程序被终止。它像往常一样从后台返回。 @CoDEFRo 通过Xcode调试时,需要在应用崩溃后点击停止按钮,才能正常重启应用。 对...在这种情况下,它为什么会冻结是有道理的,因为 iOS 正在尝试重新启动它,但它仍然连接到调试器。再次感谢! @rmaddy 请添加 Apple 文档【参考方案2】:

您可以使用authorizationStatus class method 或ALAssetsLibrary 来检查您是否有权访问照片库。您应该在每次应用“打开”时调用的某个方法中检查此值,并相应地更新您的 UI。

【讨论】:

这正是我正在做的,当我检测到它时,如果它未经授权,我会告诉用户去设置应用程序中更改它。当他们去改变它时,应用程序崩溃了。 它实际上并不是我的代码中导致我的应用程序崩溃的方法。当用户在应用程序之外更改设置时,该应用程序正在被 iOS 崩溃。这解释了它:***.com/questions/12652502/…

以上是关于在检测到隐私设置更改时让应用程序自行重启的主要内容,如果未能解决你的问题,请参考以下文章

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

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

使用Android App Bundle如何在系统语言更改时让系统下载新语言

系统检测到异常流量,请问这个该如何解决

检测通知何时出现(来自其他应用程序)以更改我的布局

iOS 设置(隐私 -> 定位服务 -> 选择我的应用 -> 更改允许访问)崩溃