【发布时间】:2019-01-13 22:54:22
【问题描述】:
我真的很难弄清楚一些事情,我已经在整个互联网上寻找了答案,但我找不到答案。如您所知,Spotify 和 Apple Music 等音乐应用程序本身可以让用户重新排列下一个队列,即使用户正在听一首歌。我一直无法弄清楚如何做同样的事情。我希望能够完全重新排列队列,包括在下一个队列中添加、删除和移动歌曲。我尝试了各种方法,例如
musicPlayer.setQueue([queue])
但这需要我调用musicPlayer.prepareToPlay() afterwords 来更新队列,这将结束当前歌曲并启动新队列。
我也试过
musicPlayer.perform(queueTransaction: { (currentQueue) in
let oldItems = currentQueue.items
var currentItem: MPMediaItem? = nil
for (i, item) in oldItems.enumerated() {
if i == musicPlayer.indexOfNowPlayingItem {
currentItem = item
continue
}
currentQueue.remove(item)
}
currentQueue.insert(queue, after: currentItem)
}, completionHandler: { (newQueue, error) in
if let error = error {
print("there was an error updating the queue", error)
return
}
print("=== NEW QUEUE ===") //insert does not work
for item in newQueue.items {
print(" -", item.title ?? "[No Title]")
}
})
但是您可能从这个问题中知道: MPMusicPlayerControllerMutableQueue insert an Apple Music song not working
队列的在项目后插入功能似乎不起作用(我还尝试将项目设置为 nil,这有时会删除当前项目并将队列设置为空)。我也知道musicPlayer.prepend([queue]),它将在当前播放项目之后添加新队列,但我还必须从内存中删除前一个队列,这样下一个队列最终不会超过 300 首歌曲。我也尝试在队列事务中使用prepend 函数,但有时歌曲会在中间停止,音乐播放器会将nowPlayingItem 设置为零。我真的希望有人知道这个问题的答案,因为我已经遇到这个问题超过 4 天了,我似乎无法找到一个 100% 有效的解决方案。
【问题讨论】:
标签: ios swift mpmusicplayercontroller