切换相机权限会导致崩溃

时间:2016-03-25 22:48:49

标签: ios swift camera

我试图处理要求用户访问相机的权限。到目前为止,我有一个正确返回相机当前授权状态的方法,当相机权限被拒绝时,应用程序正常工作。

但是,如果我进入手机设置并将相机权限切换为"允许",当我重新启动应用程序并尝试启动捕获会话时,我会继续发生这种奇怪的崩溃(我的相机会立即启动当应用程序打开FYI时)。这是崩溃:

  

*由于未捕获的异常终止应用程序&#39; NSGenericException&#39;,原因:&#39; * AVCaptureSession无法在调用beginConfiguration / commitConfiguration&#39; <之间启动/ p>

以下是启动会话的代码(在commitConfiguration之后):

dispatch_async(captureSessionQueue) {
        self.captureSession.startRunning()
    }

通过调用此函数检查授权状态后调用上面的代码。带有捕获会话的cameraView仅在我检查权限是否已授权后初始化:

public func IsCameraAuthorized() -> AVAuthorizationStatus {
var authorizationStatus = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo)
switch authorizationStatus {
case .NotDetermined:
    // permission dialog not yet presented, request authorization
    AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo) { granted in
        if granted {
            authorizationStatus = .Authorized
        } else {
            // user denied
            authorizationStatus = .Denied
        }
    }
    break
case .Authorized:
    // go
    break
case .Denied, .Restricted:
    // the user explicitly denied camera usage or is not allowed to access the camera devices
    break
}

return authorizationStatus

}

对我做错了什么的想法?如果我在开始会话之前提交配置,为什么这不起作用?

1 个答案:

答案 0 :(得分:0)

您的授权码没有任何问题。尝试删除dispatch_async块并开始在viewDidAppear

内捕获