3

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

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

保护用户隐私指南未概述任何其他访问相机的方法。

4

2 回答 2

1

authorizationStatus(for:)通过在从中初始化AVCaptureDeviceInput之前检查AVCaptureDevice ,发现该解决方案实际上类似于 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
}
于 2018-09-26T06:47:17.717 回答
0

用于呈现对话框和捕获响应的 Apple 文档位于: 请求 MacOS 上的媒体捕获授权

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

史蒂夫

于 2019-01-11T18:17:47.823 回答