我正在寻找一种使用MPMediaPickerController允许用户选择歌曲的方法。 我希望用户能够将歌曲文件路径分配给按钮,以便每次他/她按下按钮时都会播放该特定歌曲。 我不想将文件复制到我的应用程序,只想在用户音乐库中找到它的快捷方式。 在我看来,MPMediaItemPropertyAssetUrl是要走的路。 如果我是正确的,设置媒体选择器的代码如下所示:
let mediaPicker = MPMediaPickerController(mediaTypes: .music)
mediaPicker.delegate = self
mediaPicker.prompt = "Select song (Icloud songs must be downloaded to use)"
mediaPicker.allowsPickingMultipleItems = false
mediaPicker.showsCloudItems = false
presentViewController(mediaPicker, animated: true, completion: {})
我的困惑在于如何添加将返回用户资产 url 的代码,以便他们可以将其添加到按钮中播放?
您需要调用委托函数:
func mediaPicker(mediaPicker: MPMediaPickerController, didPickMediaItems mediaItemCollection: MPMediaItemCollection)
然后,您可以通过 MPMediaItemCollection 访问媒体项(无论用户选择什么(:
for thisItem in mediaItemCollection.items as [MPMediaItem] {}
在上述行末尾的该块中,您可以访问所选项目的URL,如下所示:
let itemUrl = thisItem.valueForProperty(MPMediaItemPropertyAssetURL) as? NSURL
然后从播放器的 URL 播放