0

我有一个使用 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,以此类推。从歌曲 3 开始,如果我点击后退按钮,我希望回到歌曲 2,然后前进按钮将前进到歌曲 3。

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

第一个返回歌曲按钮点击通常会留在流派中,但下一个将转到我在点击使用前置代码的按钮之前正在播放的歌曲。

我向 Apple 提交了代码级支持票,过了一会儿,工程师说问题不在于我,而是在 Apple 端,并指示我也提交错误报告并包括票#,他们将帮助找到解决方法。那是 **2 个月前*,我再也没有收到回音。

我希望有人能帮忙。

4

0 回答 0