在我看来,MusicKit仅适用于 beta iOS 版本。但是,我很确定,我以前见过一种不使用 MusicKit 的方法。这可能吗?我已经搜索了一段时间,但我只找到了关于 MusicKit 的东西。
我知道这在 macOS 上是可能的——我可以使用相同的 API 吗?
编辑:我需要做的就是获取用户歌曲/专辑的列表。我不需要任何功能来播放歌曲。
在我看来,MusicKit仅适用于 beta iOS 版本。但是,我很确定,我以前见过一种不使用 MusicKit 的方法。这可能吗?我已经搜索了一段时间,但我只找到了关于 MusicKit 的东西。
我知道这在 macOS 上是可能的——我可以使用相同的 API 吗?
编辑:我需要做的就是获取用户歌曲/专辑的列表。我不需要任何功能来播放歌曲。
从 iOS 3.0 开始,它并没有被弃用,您可以使用MPMediaQuery
类来访问用户库。这允许您获取诸如专辑、艺术家、有声读物、播放列表、歌曲等对象。
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!)
}
}
请记住,从 iOS 10 开始,您必须向用户请求访问音乐库的权限。您需要添加Privacy - Media Library Usage Description
到Info.plist
文件中。没有这个,应用程序在请求授权时会崩溃。
对于请求访问,使用MPMediaLibrary
类及其requestAuthorization方法
您可以像这样使用MPMediaLibrary获取歌曲列表
for song in MPMediaQuery.songs().items! {
print(song.persistentID.description)
print(song.title!)
print(song.assetURL?.absoluteString ?? "")
print(song.albumTitle ?? "Unknown")
...
}