ios - 切换相机权限会导致崩溃

标签 ios swift camera

我正在尝试请求用户授予访问相机的权限。到目前为止,我有一个方法可以正确返回相机的当前授权状态,并且当相机权限被拒绝时,应用程序可以正常工作。

但是,如果我进入手机设置并将相机权限切换为“允许”,当我重新启动应用程序并尝试启动捕获 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/

相关文章:

iphone - 如何解决在类型为 "AppDelegate"的对象上找不到属性数组错误

ios - React Native onStartShouldSetResponder 和 onResponderRelease?

iphone - 如何实现全局静态类

android - 修复 Android 相机帧率

android - Camera Preview 需要一些时间来重新绘制 Orientation Change

ios - 在 tableview controller storyboard 中添加标签栏

ios - DispatchQueue.main.sync 返回 exc_bad_instruction Swift 3

swift - 将 String 类型转换为 Error 是不可预测的

macos - 如何使用 Swift 输出到 STDERR?

Android 相机为空?