MPMediaPickerControllerDelegate Проверка разрешений Swift - PullRequest
1 голос
/ 17 июня 2019

У меня есть следующий код в моем проекте для выбора аудиофайлов через 'MPMediaPickerControllerDelegate'. При запуске кода ниже, в первый раз пользователю предлагается предоставить разрешение. Если пользователь отклонит загрузку, сборщик молча потерпит неудачу.

Есть ли способ предложить пользователю предоставить разрешение, если он вернется после первого отклонения?

Мне было интересно, если это ошибка. Есть ли способ определить разрешение MPMediaPickerControllerDelegate, чтобы мы могли решить, показывать аудио или нет.

Ниже мой код:

let myMediaPickerVC = MPMediaPickerController(mediaTypes: MPMediaType.anyAudio)
myMediaPickerVC.allowsPickingMultipleItems = false
myMediaPickerVC.delegate = self
present(myMediaPickerVC, animated: true, completion: nil)

1 Ответ

0 голосов
/ 17 июня 2019

Сначала необходимо проверить разрешение на авторизацию, а затем запустить код, если разрешение authorizationStatus равно authorized.Если это не notDetermined, попросите разрешения.Если это denied, то покажите Alert, прося пользователя перейти в Настройки и активировать это разрешение.

MPMediaLibrary.requestAuthorization({(newPermissionStatus: MPMediaLibraryAuthorizationStatus) in  
    // This code will be called after the user allows or denies your app permission.  
    switch (permissionStatus) {  
        case MPMediaLibraryAuthorizationStatus.authorized:  
             print("permission status is authorized")  
        case MPMediaLibraryAuthorizationStatus.notDetermined:  
             print("permission status is not determined")  
          MPMediaLibrary.requestAuthorization(MPMediaLibraryAuthorizationStatus -> permissionStatus)  
        case MPMediaLibraryAuthorizationStatus.denied:  
             print("permission status is denied")  
        case MPMediaLibraryAuthorizationStatus.restricted:  
             print("permission status is restricted")  
    }  
}) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...