Я пытаюсь обращаться с запросом к пользователю для доступа к камере. До сих пор у меня есть метод, который правильно возвращает текущий статус авторизации для камеры, а когда разрешение камеры отклонено, приложение работает нормально.Переключение разрешений камеры вызывает сбой
Однако, если я зашел в настройки своего телефона и переключил разрешение камеры на «Разрешить», я все время получаю этот странный сбой при перезагрузке приложения и пытаюсь запустить сеанс захвата (моя камера запускается сразу же после открытия приложения FYI). Вот авария:
* Нагрузочное приложение из-за неперехваченное исключение 'NSGenericException', причина: '* AVCaptureSession не может startRunning между вызовами beginConfiguration/commitConfiguration'
Вот код начать сеанс (который после I commitConfiguration):
dispatch_async(captureSessionQueue) {
self.captureSession.startRunning()
}
Приведенный выше код вызывается после того, проверить состояние авторизации с помощью этой функции. CameraView с сессией захвата инициализируется только после того, как я могу проверить, что разрешение Авторизованный:
public func IsCameraAuthorized() -> AVAuthorizationStatus {
var authorizationStatus = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo)
switch authorizationStatus {
case .NotDetermined:
// permission dialog not yet presented, request authorization
AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo) { granted in
if granted {
authorizationStatus = .Authorized
} else {
// user denied
authorizationStatus = .Denied
}
}
break
case .Authorized:
// go
break
case .Denied, .Restricted:
// the user explicitly denied camera usage or is not allowed to access the camera devices
break
}
return authorizationStatus
}
Любые мысли о том, что я делаю неправильно? Почему это не работает, если я завершаю настройку перед началом сеанса?
на самом деле его поведение по умолчанию .... –