在 macOS Mojave 中请求相机权限

Request camera permissions in macOS Mojave

如果用户未授予权限,则在 macOS Mojave 中为相机初始化 AVCaptureDeviceInput 会失败。 尝试初始化时,系统会自动显示权限请求对话框。似乎没有办法得到用户响应的通知。

我正在寻找一种模拟方式来获得通知,就像在以下位置请求音频权限一样:

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

它确实需要对对话框进行异步处理,因此将检查授权状态与文档中介绍的方法结合使用可能会有所帮助。

史蒂夫