首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MPMusicPlayerController在继续播放后跳到下一首歌曲

MPMusicPlayerController在继续播放后跳到下一首歌曲
EN

Stack Overflow用户
提问于 2019-09-22 16:42:16
回答 1查看 238关注 0票数 0

我正在使用MPMusicPlayerController播放苹果音乐的歌曲。我定期(每隔几秒钟)使用

setQueue(with: MPMusicPlayerStoreQueueDescriptor(storeIDs: ids))

我没有任何问题,在音乐播放,歌曲队列是更新的要求,我可以跳到下一首歌曲,一切都很好。然而,每当我暂停播放器在歌曲中间,等待一个新的队列设置,并再次播放-当前歌曲丢失,下一首歌曲开始播放!

因此,想象一下以下情况:

A, B, C, D

  • I play()

  • player.nowPlayingItem将歌曲队列设置为歌曲队列,调用A

  • I将歌曲队列设置为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

我还为上面的场景做了一些日志输出:

代码语言:javascript
运行
复制
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
    }
}

奇怪的是,即使在中间更改队列,锁定屏幕上的暂停/播放也能正常工作。

有没有人遇到过类似的问题,有什么提示或解决办法来解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2019-09-23 20:18:56

作为一种解决办法,我用

代码语言:javascript
运行
复制
player.currentPlaybackRate = 1

而不是player.play()。似乎play()所做的不仅仅是在暂停的位置播放。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58051335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档