0

我的项目中有以下代码通过“MPMediaPickerControllerDelegate”选择音频文件。运行以下代码时,第一次提示用户授予权限。如果用户拒绝加载,选择器将静默失败。

如果用户在最初拒绝后返回,有没有办法提示用户授予权限?

我想知道这是否是一个错误。有什么方法可以检测 MPMediaPickerControllerDelegate 的权限,以便我们决定是否显示音频。

下面是我的代码:

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

1 回答 1

2

您必须首先检查授权权限,然后如果 authorizationStatus 权限为 ,则运行您的代码authorized。如果不是notDetermined,请请求许可。如果它denied然后显示警报要求用户转到设置并启用此权限。

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")  
    }  
}) 
于 2019-06-17T13:16:12.620 回答