【发布时间】:2015-06-27 22:11:41
【问题描述】:
我的应用通过AVPlayer 播放流音频,并使用MPNowPlayingInfoCenter 在设备锁定屏幕上显示有关流的信息。
这在实际播放音频时可以正常工作,但如果由于网络速度变慢而导致流停止(即我收到AVPlayerItemPlaybackStalledNotification),则信息将从锁定屏幕中消失。但是,如果流继续播放,它会重新出现。
这很令人困惑,因为当正在播放的信息从锁定屏幕上消失时,它会让人觉得应用程序已停止播放。但随后它会恢复播放,此时锁定屏幕 UI 似乎表明这不会发生。
我可以做些什么来确保正在播放的信息在应该播放但当前不是由于网络速度问题时仍然可见?似乎保持一致的锁屏 UI 的唯一方法是在网络连接停止时实际终止网络连接,这有点愚蠢,但至少不会令人困惑。
如果更多细节会有所帮助:
- 当应用收到通知时,它唯一要做的就是更新 UI。
- 当有当前节目时,该应用永远不会清除
MPNowPlayingInfoCenter,因此只要应该播放流,就会显示非空数据。
【问题讨论】:
-
您是从时间观察者那里设置信息中心字典吗?例如:
addPeriodicTimeObserverForInterval: -
不,我没有使用时间观察器。正在播放的信息仅在直接响应用户操作和应用进入前台时更新。
-
您在收听
AVPlayerItemPlaybackStalledNotification吗?当你不听的时候会发生什么?缓存数据流又是什么? -
谁拥有字典,是强属性还是局部变量?
-
@MiralemCebic 是的,我正在收听该通知。如果我不听,则无法更新 UI,因此即使没有声音,它看起来仍在播放。收到通知后,我不会更改正在播放的信息。
标签: ios audio avfoundation avplayer mpnowplayinginfocenter