我正在编写一个iOS 8应用程序,用户可以从相机拍摄照片。我使用此代码检查授权状态(这非常简单,我很确定每个人都这样做):
func showCameraImagePicker() {
let authorizationStatus = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo)
switch authorizationStatus {
case .Authorized:
// ...
case .Denied:
// ...
case .Restricted:
// ...
case .NotDetermined:
// ...
}
}
当我运行应用程序时,无论首次运行时的授权状态如何,它都能正常运行。但是,如果我转到“设置”应用并更改授权状态,则返回应用,执行相同的代码,就像授权状态未更改一样。
例如,如果我最初允许相机访问,然后转到“设置”并为我的应用禁用“相机”,然后返回应用,.Authorized
的代码仍然执行 - 它会显示{ {1}}但现在有黑屏。当我终止应用并再次运行时,UIImagePickerController
下的代码就会运行。
如何让我的代码听取相机中权限的更改?
更新
这真的很奇怪 - 我也恰好有this problem .Denied
显示相机拍摄的速度很慢,it only happens when debugging from Xcode。我再次运行我的应用程序而没有将其连接到Xcode的调试器,并且在“设置”屏幕中更改“摄像机”权限工作,虽然它似乎重新启动了我的应用程序(应用程序从第一个屏幕重新开始,而不是在我停止之前从“设置”中更改权限)。这是正常的吗?如何确保在发布版本中不会发生此错误?