ios - 如何防止 iOS 应用在更改相机权限后重置?

标签 ios ios8 user-permissions ios-camera

目前,当我在“设置”中更改我的应用程序的相机权限,然后导航回我的应用程序时,应用程序将强制刷新,我将失去在应用程序中的位置。我完全遵循这些步骤:

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

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

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

用户场景:如果用户深入导航到您的应用,然后需要更改相机权限(因为说他们不小心点击了上次),他们将被迫导航回该屏幕当他们回来的时候。这对于试图向您推销东西或为您注册新帐户的应用尤其有害。他们可能会尝试引入一项新功能,您可以使用相机拍摄个人资料照片或扫描信用卡。因为用户不知道这个功能,他们可能之前拒绝了摄像头访问,但现在想启用它。尝试重新启用后,他们回到您的应用程序,发现他们必须再次花费 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 - 如何防止 iOS 应用在更改相机权限后重置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31706447/

相关文章:

ios - Parse.com iOS [pod Parse] 错误

ios - 在 NSURLSession 内部使用时,UIAlertView 花费的时间太长

ios - 如何在iOS 9中每次获得用户权限

android - 如何检查设备是否支持用户的联系人?

python - 如何在django admin中显示与某个用户相关的记录

ios - 无法设置属性,CLLocation

ios - 在 Swift 中远程通知后使相机灯闪烁

android - 强制更新混合移动应用程序

ios - 在 UIsplitView 中更改主按钮的标题

swift - requestWhenInUseAuthorization() 在 iOS 8 中无法使用 Info.plist 中的 NSLocationWhenInUseUsageDescription 键