MPMediaPlayer不支持跟踪队列

时间:2018-06-14 18:57:21

标签: ios swift mpmediaplayercontroller

我有一个使用Swift编码的音乐应用程序,我发现了一个Apple已经承认错误的错误。

在应用程序中,我可以点击按钮并根据当前播放的歌曲播放歌曲。我正在使用prepend来创建队列。因此,例如当我想在队列中添加特定类型时,我使用

let lockArtist = MediaManager.shared.getSongsWithCurrentArtistFor(item: nowPlaying)
if var items = lockArtist.items {
    items.shuffle()
    let descriptor =  MPMusicPlayerMediaItemQueueDescriptor(itemCollection:  MPMediaItemCollection(items: items))
  self.mediaPlayer.prepend(descriptor)
}

MediaManager.shared.getSongsWithCurrentArtistFor

func getSongsWithCurrentArtistFor(item: MPMediaItem) -> MPMediaQuery {
  let artistPredicate = MPMediaPropertyPredicate(value: item.artist, forProperty: MPMediaItemPropertyArtist, comparisonType: .contains)
  let query = MPMediaQuery()
  query.addFilterPredicate(artistPredicate)
  return query
}

此代码有效!它将类型添加到队列它不跟踪队列。我将解释

我期待发生的事情是歌曲1出现,然后是歌曲2,然后是歌曲3,依此类推。从Song 3开始,如果我点击后退按钮,我希望回到第2首,然后前进按钮将转到歌曲3。

实际发生的事情是歌曲1出现,然后是歌曲2,然后是歌曲3,当我点击歌曲3中的后退按钮时它不会回到歌曲2而是随机的歌曲和点击前进按钮不会转到歌曲3而是另一首随机歌曲。

第一个后退歌曲按钮点击通常会保持在流派内,但下一个将转到我正在播放的歌曲,然后点击使用前置代码的按钮。

我向Apple提交了代码级支持票,过了一段时间,工程师说这个问题不在我身边,而是在Apple的最后,并指示我提交错误报告并包含#和他们的票帮助找到一个解决方法。那是** 2个月*之前,我从未收到过回复。

我希望有人可以提供帮助。

0 个答案:

没有答案