Запрос разрешения камеры в macOS Mojave - PullRequest
0 голосов
/ 26 сентября 2018

Инициализация AVCaptureDeviceInput для камеры не выполняется в macOS Mojave, если пользователь не предоставил разрешения.При попытке инициализации система автоматически отображает диалоговое окно запроса разрешения.Кажется, что нет никакого способа получить уведомление об ответе пользователя.

Я ищу аналоговый способ получения уведомлениякак и при запросе разрешений на аудио в:

В руководстве Защита конфиденциальности пользователя не описаны другие способыдоступ к камере.

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Документы Apple для представления диалогового окна и получения ответа находятся по адресу: Запрос авторизации для захвата мультимедиа в MacOS

Требуется асинхронная обработка диалога, поэтому возможно сочетаниеПроверка статуса авторизации с использованием подхода, представленного в документации, будет полезна.

Стив

0 голосов
/ 26 сентября 2018

Обнаружил, что решение на самом деле аналогично iOS, проверив authorizationStatus(for:) на 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
}
...