【发布时间】:2019-08-29 07:55:03
【问题描述】:
当歌曲到达结尾时,MPMusicPlayerController 将播放状态报告为暂停,并且在歌曲排队后也将播放状态报告为暂停,即使在显式调用 .Stop() 之后也是如此。
这种行为以前不存在,现在导致我的排队代码出现问题,该代码使用playbackState == .stopped 检查。
我已经为MPMusicPlayerControllerPlaybackStateDidChange 设置了一个通知中心处理程序,它调用一个测试播放状态是否为.stopped 的函数,该函数又调用一个委托函数来提醒我的应用程序的其他方面(传输状态,从歌曲已完成的应用程序队列、排队后续曲目等)。
此行为在此更新之前很好。
谁能告诉我解释更改的发行说明,或提供有关如何正确检测歌曲结尾的指导?
我尝试将当前播放位置与歌曲的持续时间进行比较,但它们似乎从未对齐。当前播放位置似乎总是比持续时间短几秒钟。我尝试比较 TimeIntervals(分辨率太高)以及使用格式化程序将它们转换为字符串并进行比较(看到时间在 UI 中正确报告)。
我还应该提到我已经尝试测试 nowPlayingItem 为 nil,但当前轨道没有被删除(也是问题的一部分,但我现在将它们视为相关)。
【问题讨论】:
标签: ios mpmusicplayercontroller notificationcenter swift5