如何收听相机授权状态的变化?

时间:2015-06-08 21:13:33

标签: ios swift cocoa-touch avfoundation

我正在编写一个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的调试器,并且在“设置”屏幕中更改“摄像机”权限工作,虽然它似乎重新启动了我的应用程序(应用程序从第一个屏幕重新开始,而不是在我停止之前从“设置”中更改权限)。这是正常的吗?如何确保在发布版本中不会发生此错误?

0 个答案:

没有答案