首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Swift 3中检查MPMediaLibrary的授权

在Swift 3中检查MPMediaLibrary的授权
EN

Stack Overflow用户
提问于 2016-11-21 15:38:51
回答 2查看 1.4K关注 0票数 2

我使用以下代码来检查MPMediaLibrary授权:

代码语言:javascript
复制
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中什么都没有。我不明白:

代码语言:javascript
复制
 MPMediaLibrary.requestAuthorization( handler: (MPMediaLibraryAuthorizationStatus) -> Void )

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

EN

回答 2

Stack Overflow用户

发布于 2019-02-18 18:09:07

用于swift 4.2的,用于检查MPMediaLibrary的授权

代码语言:javascript
复制
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
        }
票数 2
EN

Stack Overflow用户

发布于 2017-03-23 07:43:56

您实际上已经使用了requestAuthorization方法的原型。您需要将其调整为适合您自己的使用。

代码语言:javascript
复制
MPMediaLibrary.requestAuthorization( handler: (MPMediaLibraryAuthorizationStatus) -> Void )

表示requestAuthorization接受一个函数作为参数,该函数接受一个MPMediaLibraryAuthorizationStatus作为参数,不返回任何内容。

例如,如果我想请求授权,然后在我的控制台中显示结果。我首先检查应用程序是否尚未授权:

代码语言:javascript
复制
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中经常使用的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40714988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档