MPMusicPlayerControllerMutableQueue插入Apple Music歌曲无效

时间:2018-05-29 20:57:53

标签: ios swift cocoa-touch mpmusicplayercontroller apple-musickit

所以我一直试图使用MusicKit API几天。我一直在尝试使用MPMusicPlayerApplicationControllerMutableQueue 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不是零,则没有任何反应。队列保持完全相同,如果没有发生插入,并且完成处理程序中没有提供错误。无论正在插入的歌曲是否已经在队列中,都会出现此问题。

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

1 个答案:

答案 0 :(得分:0)

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

如果你想改变队列。

您需要返回查询

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!)
  }
}