如果用户未授予权限,则在 macOS Mojave 中为相机初始化 AVCaptureDeviceInput 会失败。 尝试初始化时,系统会自动显示权限请求对话框。似乎没有办法获得用户响应的通知。
+ (instancetype)deviceInputWithDevice:(AVCaptureDevice *)device 错误:(NSError * _Nullable *)outError;
https://developer.apple.com/documentation/avfoundation/avcapturedeviceinput/1450880-deviceinputwithdevice
我正在寻找一种模拟方式来获得通知,就像请求音频权限一样:
func requestRecordPermission(_ response: @escaping PermissionBlock)
https://developer.apple.com/documentation/avfoundation/avaudiosession/1616601-requestrecordpermission
Protecting the User's Privacy指南未概述任何其他相机访问方法。
最佳答案
查看authorizationStatus(for:)
发现解决方案其实是模拟iOS的在从 AVCaptureDevice 初始化一个 AVCaptureDeviceInput 之前。
并使用 requestAccess(for:completionHandler:)
如果需要,请求许可。
获取相机访问权限的示例:
let status = AVCaptureDevice.authorizationStatus(for: .video)
if status == .authorized {
// connect to video device
let devices = AVCaptureDevice.devices(for: .video)
...
return
}
if status == .denied {
// show error
return
}
AVCaptureDevice.requestAccess(for: .video) { (accessGranted) in
// handle result
}
关于swift - 在 macOS Mojave 中请求相机权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52511373/