MPMusicPlayerControllerMutableQueue插入一首Apple Music歌曲不起作用



所以我几天来一直在尝试使用MusicKit API。我一直在尝试使用 MPMusicPlayerApplicationController 和 MutableQueue API。

我已经使用setQueue(with: [String])和 Apple Music 歌曲的商店标识符数组初始化了队列。然后我想允许用户对队列中的歌曲重新排序。我使用以下代码来尝试这样做。

let musicPlayerController = MPMusicPlayerController.applicationQueuePlayer
musicPlayerController.perform(queueTransaction: { queue in 
let afterItem = queue.items.first(where: { $0.playbackStoreID == predecessorId })
let descriptor = MPMusicPlayerStoreQueueDescriptor(storeIDs: [newItemId])
queue.insert(descriptor, after: afterItem)
}) { (queue, error) in
// Completion for when items' position update
if error != nil {
print(error!)
}
}

如果afterItem为 nil(即歌曲正确插入队列的前面(,则上面的代码按预期工作。但是,如果afterItem不是零,则不会发生任何事情。队列保持完全相同,就像没有发生插入一样,并且完成处理程序中没有提供错误。无论插入的歌曲是否已在队列中,都会发生此问题。

我是否尝试错误地修改队列?

好的,我找到了解决方案。

如果您希望队列发生变异。

您需要返回查询

let musicPlayerController = MPMusicPlayerController.applicationQueuePlayer
musicPlayerController.perform(queueTransaction: { queue in 
let afterItem = queue.items.first(where: { $0.playbackStoreID == predecessorId })
let descriptor = MPMusicPlayerStoreQueueDescriptor(storeIDs: [newItemId])
//return the modification here.
return queue.insert(descriptor, after: afterItem)
}) { (queue, error) in
// Completion for when items' position update
if error != nil {
print(error!)
}
}

最新更新