我正在尝试请求用户授予访问相机的权限。到目前为止,我有一个方法可以正确返回相机的当前授权状态,并且当相机权限被拒绝时,应用程序可以正常工作。
但是,如果我进入手机设置并将相机权限切换为“允许”,当我重新启动应用程序并尝试启动捕获 session 时,我会不断遇到这种奇怪的崩溃(仅供引用) )。这是崩溃的情况:
* Terminating app due to uncaught exception 'NSGenericException', reason: '* AVCaptureSession can't startRunning between calls to beginConfiguration / commitConfiguration'
这是启动 session 的代码(在我提交配置之后):
dispatch_async(captureSessionQueue) {
self.captureSession.startRunning()
}
上面的代码是在我通过调用此函数检查授权状态后调用的。仅在我检查权限已授权后,才会初始化具有捕获 session 的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
}
对我做错了什么有什么想法吗?如果我在启动 session 之前提交配置,为什么这不起作用?
最佳答案
您的授权码没有任何问题。尝试删除您的 dispatch_async
block 并开始在 viewDidAppear
关于ios - 切换相机权限会导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36229298/