我使用以下代码来检查MPMediaLibrary授权:
func handlePermissions() {
let permissionStatus = MPMediaLibrary.authorizationStatus()
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")
}
}最终,在调用case MPMediaLibraryAuthorizationStatus.notDetermined:.之前,我会尝试提示用户授权(在启动时)上面的代码产生了错误:'->‘后的预期类型。当requestAuthorization()行被注释掉时,应用程序在启动时崩溃(未授权访问),并在启动屏幕消失后显示授权提示视图。
我在Objective C中见过一些如何执行requestAuthorization()的示例,但在Swift中什么都没有。我不明白:
MPMediaLibrary.requestAuthorization( handler: (MPMediaLibraryAuthorizationStatus) -> Void )在Swift 3中请求授权访问MPMediaLibrary的正确方式是什么?
发布于 2019-02-18 18:09:07
用于swift 4.2的,用于检查MPMediaLibrary的授权
import MediaPlayer
let status = MPMediaLibrary.authorizationStatus()
switch status {
case .authorized:
self.openMusicLibrary()
break
case .notDetermined:
MPMediaLibrary.requestAuthorization() { status in
if status == .authorized {
DispatchQueue.main.async {
self.openMusicLibrary()
}
}
}
break
case .denied:
//show alert
print("Please Allow Access to the Media & Apple Music from appliction setting.")
break
case .restricted:
break
}发布于 2017-03-23 07:43:56
您实际上已经使用了requestAuthorization方法的原型。您需要将其调整为适合您自己的使用。
MPMediaLibrary.requestAuthorization( handler: (MPMediaLibraryAuthorizationStatus) -> Void )表示requestAuthorization接受一个函数作为参数,该函数接受一个MPMediaLibraryAuthorizationStatus作为参数,不返回任何内容。
例如,如果我想请求授权,然后在我的控制台中显示结果。我首先检查应用程序是否尚未授权:
if authoriationStatus != .authorized {
MPMediaLibrary.requestAuthorization({
(status) in
switch status {
case .notDetermined:
print("notDetermined")
case .denied:
print("denied")
case .restricted:
print("restricted")
case .authorized:
print("authorized")
}
})
}如您所见,我使用了一个函数作为requestAuthorization方法的参数。该函数在{...}中描述。它被称为闭包,这是你在Swift中经常使用的东西。
https://stackoverflow.com/questions/40714988
复制相似问题