我有一个使用 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 个月前*,我再也没有收到回音。
我希望有人能帮忙。