MPNowPlayingInfoCenter在音频流停止时消失

Tom*_*ton 31 audio avfoundation ios avplayer mpnowplayinginfocenter

我的应用程序播放流式音频AVPlayer,并用于MPNowPlayingInfoCenter在设备锁定屏幕上显示有关流的信息.

这在音频实际播放时工作正常,但如果流因网络减速(即我收到AVPlayerItemPlaybackStalledNotification)而停止,则信息会从锁定屏幕消失.但是如果流恢复播放,它会重新出现.

这是令人困惑的,因为当现在播放的信息从锁定屏幕消失时,它给出了应用程序已停止播放的外观.但是当锁定屏幕UI似乎表明这不会发生时,它会恢复播放.

有什么我可以做的事情来确保现在播放的信息在流应该播放时仍然可见,但目前不是由于网络速度问题?似乎保持一致的锁屏UI的唯一方法是在网络连接停止时实际终止它,这有点愚蠢但至少不会混淆.

如果更多细节会有所帮助:

  • 当应用程序获得该通知时,它唯一做的就是更新UI.
  • MPNowPlayingInfoCenter当有一个当前程序时,应用程序永远不会清除,因此只要该流应该正在播放,就应该显示非空数据.

小智 1

如果我猜测一下(自从我使用 AVFoundation 以来已经有一段时间了),我会假设一旦数据停止流过音频缓冲区,操作系统就会停用您的音频会话。一个技巧是维护第二个 AVPlayer,它播放静音以填充死点,直到您缓冲了足够的数据以恢复播放或达到超时并放弃。使用通知在玩家对象之间切换。