Библиотека фотографий и камера доступны после получения разрешения - PullRequest
0 голосов
/ 28 мая 2019

В настоящее время я работаю над приложением, в котором мне нужен доступ к библиотеке фотографий или к камере (или даже к обоим, это зависит от пользователя).

Если я закрою приложение и откажу в доступев камеру и библиотеку для приложения.

После перезапуска моего приложения все еще можно получить доступ к обоим, я могу открыть и использовать камеру или даже выбрать фотографию из библиотеки.Как это возможно, я думал, Apple ограничит доступ.

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Хорошо, я знаю ответ ... Я просто не понял концепцию.Если я отказываю в доступе к фотобиблиотеке, сохранить изображения невозможно, но, если доступ к камере предоставлен, я все равно могу использовать фотобиблиотеку.Если доступ к камере запрещен, я все равно получаю предупреждение с контекстом из info.plist

0 голосов
/ 28 мая 2019

Я так не думаю. Apple всегда ограничивает использование камеры или библиотеки фотографий, если доступ запрещен. Пожалуйста, используйте следующий код, чтобы проверить текущий статус и проверить его.

    import Photos

    if type == .CAMERA{

        if AVCaptureDevice.authorizationStatus(forMediaType: AVMediaTypeVideo) ==  AVAuthorizationStatus.authorized {
            completionHander(true) //Allowed
        } else {
            //Dont Know
            AVCaptureDevice.requestAccess(forMediaType: AVMediaTypeVideo, completionHandler: { (granted: Bool) -> Void in
                completionHander(granted)
            })
        }
    }else{
        let status = PHPhotoLibrary.authorizationStatus()
        switch status {
        case .authorized:
            completionHander(true)//Allowed
            break
        case .denied, .restricted :
            completionHander(false)//Not Allowed
            break
        case .notDetermined:
            //Dont Know
            PHPhotoLibrary.requestAuthorization { status in
                switch status {
                case .authorized:
                    completionHander(true)
                    break
                case .denied, .restricted:
                    completionHander(false)
                    break
                case .notDetermined:
                    completionHander(false)
                    break
                }
            }
        }
    }
...