当应用程序进入后台时,AVPlayer 和 addPeriodicTimeObserverForInterval 不起作用
Posted
技术标签:
【中文标题】当应用程序进入后台时,AVPlayer 和 addPeriodicTimeObserverForInterval 不起作用【英文标题】:AVPlayer and addPeriodicTimeObserverForInterval does not work when app goes to background 【发布时间】:2012-02-26 22:40:26 【问题描述】:问题 1。 我在 iphone 4 和 ios 5.0.1 上看到以下行为
使用 addPeriodicTimeObserverForInterval 注册以每 250 毫秒接收一次更新并更新 UI。
在应用程序进入后台之前运行良好。例如。点击主页按钮或锁定屏幕,
当应用程序返回前台时,播放器会再次开始播放,但更新不会再次触发。如果用户再次点击 UI 上的播放暂停按钮,则更新开始再次触发。 这也可以在苹果的demo 应用程序中看到。问题 2
我们不能将基于 C 的音频会话 API 与 AV 基础类混合使用吗?例如。我在 AudioInterruptions 时注册了基于 C 的侦听器。但是当我将 AVPlayer 与 kAudioSessionCategory_PlayAndRecord 一起使用时,它们不会被调用。当应用程序进入后台时,AVPlayer 会暂停,而不会调用基于 C 的侦听器。
这是预期的还是我可以做些什么?请注意,一旦我处理了 AVPlayer 实例并且我的应用程序再次使用 kAudioSessionCategory_PlayAndRecord 进入后台 设置为调用侦听器函数的类别。
【问题讨论】:
您是否注册了远程事件通知并将后台模式设置为应用播放音频? (您还需要将视图控制器设置为第一响应者) 谢谢苏珀。但是您还没有回答我的任何问题:(。我不希望我的应用程序在后台播放并且事实上它是我想要的行为。 【参考方案1】:对于您的第一个问题,很可能您没有按照建议发布addPeriodicTimeObserverForInterval
。尝试在您的 AppDelegate
中添加这样的内容:
- (void)applicationDidEnterBackground:(UIApplication *)application
[_audioManager.audioPlayer removeTimeObserver:_audioManager.timeObserver];
_audioManager.isUIActive = NO;
以及重启周期性时间观察器的适当方法:
- (void)applicationDidBecomeActive:(UIApplication *)application
[_audioManager setUpTransportUI];
_audioManager.isUIActive = YES;
setUpTransportUI
在哪里重新创建您的时间观察器。
【讨论】:
以上是关于当应用程序进入后台时,AVPlayer 和 addPeriodicTimeObserverForInterval 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
向上滑动(将应用程序置于后台)并且视频在自定义 AVPLayer 中播放时如何停止画中画?