UIImagePickerController isSourceTypeAvailable (type) всегда true - PullRequest
0 голосов
/ 14 января 2020

Если я блокирую камеру через приложение настроек, эта функция всегда возвращает true. Это полностью игнорирует разрешения. Кто-нибудь еще заметил это?

Ответы [ 2 ]

1 голос
/ 14 января 2020

используйте AVCaptureDevice.authorizationStatus(for: cameraMediaType) для проверки полномочий

func checkCameraAuth() {
        let authorizationStatus = AVCaptureDevice.authorizationStatus(for: .video)
        switch authorizationStatus{
        case .denied:
            print("you can request permission from settings")

        case .restricted:
            print("Restricted")
        case .authorized:
            print("Authorized, proceed")
        case .notDetermined:
            AVCaptureDevice.requestAccess(for: .video) { success in
                if success {
                    print("Permission granted you can now perform operation here")
                } else {
                    print("Permission denied")
                }
            }
        @unknown default:
            fatalError()
        }
    }
0 голосов
/ 14 января 2020

В Swift 4 вы можете проверить, доступна ли ваша камера следующим образом:

if AVCaptureDevice.authorizationStatus(for: .video) ==  .authorized {
    //already authorized
} else {
    AVCaptureDevice.requestAccess(for: .video, completionHandler: { (granted: Bool) in
        if granted {
            //access allowed
        } else {
            //access denied
        }
    })
}

из этого ответа здесь -> Как проверить, дал ли пользователь разрешение на использование камеры?

...