AVCaptureDevice.requestAccessForMediaType永远不会弹出窗口并始终返回false

时间:2016-01-09 17:41:23

标签: swift swift2

我有一些问题要求用户获得相机的许可。 authorizationStatus始终为NotDetermined。当我尝试向用户请求权限时,AVCaptureDevice.requestAccessForMediaType永远不会弹出对话框并且授予总是返回false。我也找不到我的应用程序设置 - 隐私 - 相机。

任何人都可以帮助我吗?真的很感激

let availableCameraDevices = AVCaptureDevice.devicesWithMediaType(AVMediaTypeVideo)
    for device in availableCameraDevices{

        if (device.position == .Back){
            backCameraDevice = device
        }else{
            if (device.position == .Front){
                frontCameraDevice = device
            }
        }
    }

    let authorizationStatus = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo)
    switch authorizationStatus {
    case .NotDetermined:
        // permission dialog not yet presented, request authorization
        AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo,
            completionHandler: { (granted:Bool) -> Void in
                if (granted == false) {
                    print(granted)
                }
                else {
                    print(granted)
                }
        })
    case .Authorized: break
        // go ahead
    case .Denied, .Restricted: break
        // the user explicitly denied camera usage or is not allowed to access the camera devices
    }

3 个答案:

答案 0 :(得分:7)

问题解决了。似乎当我们从iOS 8升级到iOS 9时,它在info.plist中有一个新属性,即Bundle Display Name。如果名称为null,则将名称设置为您的产品名称,否则系统将永远不知道要求许可的应用程序

答案 1 :(得分:0)

当授权状态为.NotDetermined时,您应始终能够提供权限对话框。

这个以及您无法在隐私设置中找到该应用的事实让您觉得手机很混乱 - 因此请尝试通过Settings.app > General > Reset并点击Reset Location & Privacy来重置您的隐私设置。

答案 2 :(得分:0)

  

如果要花很长时间才能显示出来,那听起来好像你不是   应该在主线程上运行它。另外,如果有   之前提示过一次,它将不会再次提示–用户必须进入   设置并启用相机访问权限。

来自ALex requestAccessForMediaType doesn't ask for permission