如何防止更改相机权限后重置iOS应用程序?
目前,当我在“设置”中更改我的应用程序的相机权限时,回到我的应用程序,应用程序将强制刷新,我将在应用程序中失去我的位置。 我完全按照这些步骤 :
- 打开使用相机权限的应用程序。
- 导航到应用程序中的某个屏幕(以便稍后可以看到刷新)
- 转到设置应用程序,导航到应用程序的设置,并切换相机的权限
- 双击回家,回到应用程序。 几秒钟后,它会刷新,带你回到第一个屏幕
注意:我正在使用运行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 }