我在向用户请求有关相机的许可时遇到一些问题。
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
}
问题解决了。看来当我们从 iOS 8 升级到 iOS 9 时,它在 info.plist 中增加了一个新属性,即 Bundle Display Name。如果为空,则将名称设置为您的产品名称,否则系统将永远不知道哪个应用程序正在请求权限
如果它需要很长时间才出现,那么听起来你好像没有 在主线程上运行它,你应该是这样。另外,如果有 之前提示过一次,就不会再提示了——用户必须进入 设置并启用相机访问。
来自 ALex requestAccessForMediaType 不请求许可
当授权状态为
.NotDetermined
时,您应该始终能够呈现权限对话框。
这一点以及您在隐私设置中找不到该应用程序的事实让您的手机听起来很混乱 - 因此请尝试通过转到
Settings.app > General > Reset
并点击 Reset Location & Privacy
来重置您的隐私设置。
在恢复模式下禁用 macOS SIP,然后重新启用它并显示所有授权对话框后,我会遇到这种情况。