1

我使用下面的代码来检查MPMediaLibrary授权:检查MPMediaLibrary授权斯威夫特3

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") 
    } 
} 

最后,我想提示(一经推出)其授权的用户调用查询之前, ...通过案例MPMediaLibraryAuthorizationStatus.notDetermined :.上面的代码产生错误:在' - >'之后的期望类型。当requestAuthorization()行被注释掉时,应用程序在启动时崩溃(访问权限未被授权),并且在启动屏幕消失后显示授权提示视图。

我见过一些如何在Objective C中执行requestAuthorization()但是没有在Swift中的例子。我不明白:

MPMediaLibrary.requestAuthorization(handler: (MPMediaLibraryAuthorizationStatus) -> Void) 

请求授权访问Swift 3中MPMediaLibrary的正确方法是什么?

回答

0

你实际上已经使用了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中使用。