iOS 12.2 MPMusicPlayerController报告错误的播放状态

问题描述 投票:1回答:1

当歌曲到达结尾时,MPMusicPlayerController将播放状态报告为暂停,并且即使在显式调用.Stop()之后,也会将播放状态报告为在排队歌曲后暂停。

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

我为MPMusicPlayerControllerPlaybackStateDidChange设置了一个通知中心处理程序,它调用一个函数来测试回放状态是否为.stopped,而nowPlayingItem又调用委托函数来提醒我的应用程序的其他方面(传输状态,从应用程序的队列中删除歌曲,排队后续歌曲已经完成的曲目等)。

在此更新之前,此行为很好。

任何人都可以通过发布说明来解释这一变化,或者提供有关如何正确检测歌曲结尾的指导吗?

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

我还应该提一下,我已经尝试过对setQueueWithItemCollection进行测试为零,但是当前的轨道没有被删除(也是问题的一部分,但我现在把它们视为相关的)。

ios mpmusicplayercontroller notificationcenter swift5
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.