我正在使用MPMusicPlayerController播放苹果音乐的歌曲。我定期(每隔几秒钟)使用
setQueue(with: MPMusicPlayerStoreQueueDescriptor(storeIDs: ids))
我没有任何问题,在音乐播放,歌曲队列是更新的要求,我可以跳到下一首歌曲,一切都很好。然而,每当我暂停播放器在歌曲中间,等待一个新的队列设置,并再次播放-当前歌曲丢失,下一首歌曲开始播放!
因此,想象一下以下情况:
A, B, C, D
play()
player.nowPlayingItem将歌曲队列设置为歌曲队列,调用A
E, F, G, H,而我称之为player.skipToNext()的
E, F, G, H,就像预期的
player.pause() - song d24暂停H 225H 126我调用player.play() - song E继续播放。一切都很好,直到now
I call player.pause()再来一次--宋E暂停了
,我将歌曲队列设置为I, J, K, L.
I call player.play() -,我希望暂停的歌曲 E 继续播放。相反,I 会启动playing我还为上面的场景做了一些日志输出:
func togglePlayPause() {
    if player.playbackState == .playing {
        player.pause()
    } else {
        NSLog("NP before \(player.nowPlayingItem)") // prints E at step 10
        player.play()
        NSLog("NP after \(player.nowPlayingItem)") // prints nil at step 10
    }
}奇怪的是,即使在中间更改队列,锁定屏幕上的暂停/播放也能正常工作。
有没有人遇到过类似的问题,有什么提示或解决办法来解决这个问题?
发布于 2019-09-23 20:18:56
作为一种解决办法,我用
player.currentPlaybackRate = 1而不是player.play()。似乎play()所做的不仅仅是在暂停的位置播放。
https://stackoverflow.com/questions/58051335
复制相似问题