我有一个使用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个月*之前,我从未收到过回复。
我希望有人可以提供帮助。