如何在不使用 MusicKit 的情况下访问用户的音乐库?

How can I access a user's music library without using MusicKit?

在我看来 MusicKit 仅适用于 beta iOS 版本。不过,我很确定,在 没有 使用 MusicKit 之前,我已经看到了一种方法。这可能吗?我已经搜索了一段时间,但只找到了有关 MusicKit 的东西。

我知道这在 macOS 上是可行的 — 我可以使用相同的 API 吗?

编辑:我需要做的就是获取用户 songs/albums 的列表。我不需要任何功能来播放歌曲。

您可以像这样使用MPMediaLibrary获取歌曲列表

for song in MPMediaQuery.songs().items! {
    print(song.persistentID.description)
    print(song.title!)
    print(song.assetURL?.absoluteString ?? "")
    print(song.albumTitle ?? "Unknown")
    ...
}

从 iOS 3.0 开始,它没有被弃用,您可以使用 MPMediaQuery class 访问用户库。这允许您获取诸如专辑、艺术家、有声读物、播放列表、歌曲等对象。

let myPlaylistQuery = MPMediaQuery.playlists()
let playlists = myPlaylistQuery.collections
for playlist in playlists! {
    print(playlist.value(forProperty: MPMediaPlaylistPropertyName)!)

    let songs = playlist.items
    for song in songs {
        let songTitle = song.value(forProperty: MPMediaItemPropertyTitle)
        print("\t\t", songTitle!)
    }
}

source

请记住,自 iOS 10 起,您必须征求用户的许可才能访问音乐库。您需要将 Privacy - Media Library Usage Description 添加到 Info.plist 文件。没有这个,应用程序在请求授权时会崩溃。

要请求访问,请使用 MPMediaLibrary class 及其 requestAuthorization 方法