在 macOS Mojave 中请求相机权限
Request camera permissions in macOS Mojave
如果用户未授予权限,则在 macOS Mojave 中为相机初始化 AVCaptureDeviceInput 会失败。
尝试初始化时,系统会自动显示权限请求对话框。似乎没有办法得到用户响应的通知。
+ (instancetype)deviceInputWithDevice:(AVCaptureDevice *)device
error:(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 指南未概述任何其他相机访问方法。
通过在初始化 AVCaptureDeviceInput[=23= 之前检查 AVCaptureDevice 上的 authorizationStatus(for:)
,发现解决方案实际上类似于 iOS ] 从中
并在需要时使用 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
}
用于呈现对话和捕获响应的 Apple 文档位于:
Requesting Authorization for Media Capture on MacOS
它确实需要对对话框进行异步处理,因此将检查授权状态与文档中介绍的方法结合使用可能会有所帮助。
史蒂夫
如果用户未授予权限,则在 macOS Mojave 中为相机初始化 AVCaptureDeviceInput 会失败。 尝试初始化时,系统会自动显示权限请求对话框。似乎没有办法得到用户响应的通知。
+ (instancetype)deviceInputWithDevice:(AVCaptureDevice *)device error:(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 指南未概述任何其他相机访问方法。
通过在初始化 AVCaptureDeviceInput[=23= 之前检查 AVCaptureDevice 上的 authorizationStatus(for:)
,发现解决方案实际上类似于 iOS ] 从中
并在需要时使用 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
}
用于呈现对话和捕获响应的 Apple 文档位于: Requesting Authorization for Media Capture on MacOS
它确实需要对对话框进行异步处理,因此将检查授权状态与文档中介绍的方法结合使用可能会有所帮助。
史蒂夫