如何防止更改相机权限后重置iOS应用程序?

目前,当我在“设置”中更改我的应用程序的相机权限时,回到我的应用程序,应用程序将强制刷新,我将在应用程序中失去我的位置。 我完全按照这些步骤

  1. 打开使用相机权限的应用程序。
  2. 导航到应用程序中的某个屏幕(以便稍后可以看到刷新)
  3. 转到设置应用程序,导航到应用程序的设置,并切换相机的权限
  4. 双击回家,回到应用程序。 几秒钟后,它会刷新,带你回到第一个屏幕

注意:我正在使用运行iOS 8.4的iPhone 6

我已经注意到所有具有相机权限的应用程序的这种行为。 我的问题是: 有什么办法来防止刷新/重新启动(在恢复)更改相机权限后的应用程序? 例如,当您切换位置服务时,似乎不会发生这种情况,而从可用性的angular度来看,这太可怕了。

用户场景 :如果用户深入浏览您的应用程序,则需要更改摄像头权限(因为他们上次没有意外地点击),他们将在返回时被迫返回到该屏幕。 这对于试图向您推销商品的应用程序尤其有害,或者注册您的新帐户。 他们可能会尝试引入一项新function,您可以使用相机拍摄个人资料照片或扫描信用卡。 由于用户不知道此function,他们可能以前拒绝摄像头访问,但现在要启用它。 试图重新启用后,他们回到您的应用程序,发现他们必须再花5分钟以上的时间注册/购买! 之后,即使我可能会放弃。

我相信没有其他方法来防止重新启动应用程序。 实际上你会得到一个SIGKILL的消息,但没有崩溃日志切换设置时。 看下面的链接 –

防止这种情况的唯一方法是在终止时保存以前的应用程序状态。

  • 将应用程序的当前数据存储到applicationWillTerminate方法的json / plist / NSUserDefaults / archive用户模型中:
  • 在applicationWillEnterForeground恢复保存的数据:

例如 – @SignUpViewController注册UIApplicationWillTerminateNotification,将在应用即将终止时触发。 在那里存储用户信息。

- (void)viewDidLoad { [super viewDidLoad]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillTerminate:) name: UIApplicationWillTerminateNotification object:nil]; } - (void)applicationWillTerminate:(NSNotification *)notification { // store your data here } 

希望对你有帮助:)

接受的答案是正确的,但是解决方法似乎不适用于当前版本的iOS(9.2) – 应用程序似乎在UIApplicationWillTerminateNotification被触发之前终止。 但是通过听取UIApplicationDidEnterBackgroundNotification,同样可以实现。 例如在Swift中,把它放在viewDidLoad()

 NSNotificationCenter.defaultCenter().addObserver(self, selector: "enteringBackground:", name: UIApplicationDidEnterBackgroundNotification, object: nil) 

并有一个这样的function:

 func enteringBackground(sender:AnyObject){ // Save application state here }