Обнаружил, что решение на самом деле аналогично 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
}