Разрешение на хранение камеры, микрофона и аудио / видео для приложения ios

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

class UserPermission: NSObject {



    //check camera and microphone is granted
    func checkAllPermissionGranted() -> Bool{
        print("photo permission: \(checkPhotoLibraryPermission())")
        if(checkCameraAccess() && checkMicrophoneAccess() && checkPhotoLibraryPermission()){
            return true
        }
        return false
    }


    //    //storage access permission
    func checkPhotoLibraryPermission() -> Bool {
        var isPermited: Bool = false
        let status = PHPhotoLibrary.authorizationStatus()
        switch status {
        case .authorized:
            //handle authorized status
            isPermited = true
            break
        case .denied, .restricted :
            //handle denied status
            isPermited = false
            break
        case .notDetermined:
            // ask for permissions
            PHPhotoLibrary.requestAuthorization { status in
                switch status {
                case .authorized:
                    // as above
                    isPermited = true
                    break
                case .denied, .restricted:
                    // as above
                    isPermited = false
                    break
                case .notDetermined:
                    // won't happen but still
                    isPermited = false
                    break
                @unknown default:
                    print("error")
                }
            }
        @unknown default:
            print("error")
        }

        return isPermited
    }

    //microphone access permission
    func checkMicrophoneAccess() -> Bool {
        var  isparmited = false

        switch AVAudioSession.sharedInstance().recordPermission  {
        case .denied:
            print("Denied, request permission from settings")
        //presentPhoneSettings()
        case .granted:
            print("Authorized, proceed")
            isparmited = true
        case .undetermined:
            AVAudioSession.sharedInstance().requestRecordPermission { success in
                if success {
                    print("Permission granted, proceed")
                    isparmited = true
                } else {
                    print("Permission denied")
                    isparmited = false
                }
            }
        @unknown default:
            print("error")
        }
        return isparmited
    }


    //camera access permission
    func checkCameraAccess() -> Bool {
        var  isparmited = false
        switch AVCaptureDevice.authorizationStatus(for: .video) {
        case .denied:
            print("Denied, request permission from settings")
        //presentPhoneSettings()
        case .restricted:
            print("Restricted, device owner must approve")
            isparmited = false
        case .authorized:
            print("Authorized, proceed")
            isparmited = true
        case .notDetermined:
            AVCaptureDevice.requestAccess(for: .video) { success in
                if success {
                    print("Permission granted, proceed")
                    isparmited = true
                } else {
                    print("Permission denied")
                    isparmited = false
                }
            }
        @unknown default:
            print("error")
        }
        return isparmited
    }

}

но мне нужны эти разрешения одно за другим, например, сначала нужна камера, затем микрофон, а затем фотографии, но не с задержкой последнего (фотографии). Помоги мне, пожалуйста.


person uttam kumar    schedule 27.06.2019    source источник
comment
с кодом, который вы нам показали, мы не можем помочь   -  person Lu_    schedule 27.06.2019
comment
@Lu_, из-за моей низкой репутации изображение info.plist не могло быть здесь. но я добавил код.   -  person uttam kumar    schedule 27.06.2019


Ответы (1)


Вы можете создать какой-нибудь учебник collectionView, и каждая ячейка может содержать описание разрешения с кнопкой для запуска разрешения системы.

person Ivan Denezhkin    schedule 27.06.2019