51

我正在为 iPhone 开发一个应用程序,它使用相机扫描条形码和拍照。当我们没有相机访问权限并且用户启用了相机访问权限时,应用程序崩溃并重新打开。

你们能帮我解决这个问题吗?

提前致谢。

4

2 回答 2

83

首次访问相机时,操作系统会自动显示权限提示。无论用户允许还是拒绝提示,您的应用程序都将继续运行。如果用户在某个时候更改了通讯簿、日历、提醒、相机或照片权限,iOS 将SIGKILL应用程序。它采取此操作以确保应用程序不再拥有任何先前授权的数据。当用户从设置应用程序移回第三方应用程序时,它会从头开始启动,现在处于拒绝授权状态。由于这种行为,我有两个建议:

  1. 检测权限何时被拒绝,并显示一些解释用户需要切换设置应用权限的 UI。在 iOS 8 中,您可以使用[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]].

  2. 实现某种状态恢复,以便当应用程序终止并重新启动时,它会将用户返回到以前可见的视图/功能。

来源(需要开发者帐户)

于 2015-04-17T18:54:44.820 回答
0

你的建议是正确的。我提出了一个警报视图,要求用户转到“设置”应用程序以更改相机和联系人权限,如果他们之前拒绝他们的话。对我来说,问题在于你的 #2 建议。我深入了解注册流程并收集了注册信息,例如姓名、电子邮件、出生日期。然后我有一个“请求权限”屏幕。当应用程序在它被杀死后重新启动时,我不再有这个注册信息了。我想,我可以在显示警报视图之前保存注册信息(到手机),然后在重新启动应用程序时,检查是否有任何以前存储的注册信息。如果是这样,请返回请求权限的屏幕,然后删除存储的注册信息。

于 2018-04-20T17:00:41.883 回答