iOS 12.2 MPMusicPlayerController 报告不正确的播放状态

标签 ios mpmusicplayercontroller notificationcenter swift5

MPMusicPlayerController 在歌曲结束时报告播放状态为暂停,并且在歌曲排队后也报告播放状态为暂停,即使在显式调用 .Stop() 之后也是如此。 .

此行为之前不存在,现在导致我的排队代码出现问题,该代码使用对 playbackState == .stopped 的检查。 .

我已经为 MPMusicPlayerControllerPlaybackStateDidChange 设置了通知中心处理程序它调用一个函数来测试播放状态是否为 .stopped这反过来调用委托(delegate)函数来提醒我的应用程序的其他方面(传输状态、从应用程序的队列中删除歌曲、对后续轨道进行排队等)歌曲已完成。

在此更新之前,此行为没有问题。

任何人都可以启发我解释更改的发行说明,或者提供有关如何正确检测歌曲结尾的指导吗?

我曾尝试将当前播放位置与歌曲的持续时间进行比较,但它们似乎从未对齐。当前播放位置似乎总是比持续时间短几秒钟。我试过比较 TimeIntervals(分辨率太高)以及使用格式化程序将它们转换为字符串并进行比较(看到时间在 UI 中正确报告)。

我还应该提到我已经尝试针对 nowPlayingItem 进行测试为零,但当前轨道未被删除(也是问题的一部分,但我目前将它们视为相关)。

最佳答案

我不确定为什么行为会发生变化,我在补丁说明中找不到任何内容。但是,您应该能够使用 setQueueWithItemCollection 对当前歌曲和下一首歌曲进行排队,并使用 MPMusicPlayerControllerNowPlayingItemDidChange 事件来更新队列,而不是一次设置一首歌曲。

关于iOS 12.2 MPMusicPlayerController 报告不正确的播放状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55568803/

相关文章:

iphone - 无法访问iPod库路径

ios - 段错误 : 11; (xcode 8, Swift 3) 使用 NotificationCenter 后

javascript - 使用 touch-punch 插件在移动设备中使用带有文本区域的可拖动 jquery-ui-dialog

ios - 隐藏特定单元格的自定义 ViewTableCell 按钮

ios - 检测 Apple Music 歌曲何时播放完毕

ios - 如何使用 MPMusicPlayerController 从特定索引播放 MPMediaItemCollection?

ios - Swift 3 中的通知中心崩溃

ios - 在通知中心永久显示数据的应用程序

php - APNs 消息已发送但未在 iOS 设备上接收

ios - 单例 UIViewController