我一直试图让这项工作工作很长一段时间:
我的应用程序有可能在UIWebView中播放Youtube的视频。用户可能希望使用AirPlay。当AirPlay打开时,设备可能会进入睡眠状态,通常视频会在发生这种情况后停止播放。正如其他帖子所建议的那样,我将AVAudioSession
类别设置为Playback
类别并且它可以正常工作 - 即使设备显示进入休眠状态,AirPlay仍会继续。
然而,这有副作用;如果用户在后台播放音乐时激活了应用程序,则将应用程序的音频会话类别设置为“播放”会导致播放音乐停止,这肯定很烦人。
理想情况下,我想在视频播放开始时设置AVAudioSession类别,而不是在我的应用程序被激活时设置 - 但我没有看到任何中央或UIWebview通知/委托方法来确定它。
我有一个针对iPhone的 hackish 解决方法,其中UIWebview托管视频播放器始终加载全屏模式,因此可以确定。但我的应用程序是Universal,在iPad上视频以内联方式启动;我无法想办法知道视频播放何时会发生。这正是音频类别应该切换到播放的时候 - 它实际上会帮助想要播放背景音乐的用户,直到视频开始播放。
我不想愚弄在UIWebView中的视频标签上添加Javascript事件 - 这对我来说似乎太脆弱了。
是否可以观察触发UIWebView视频播放的任何AVFoundation通知?或者任何人都知道任何其他方式来确定视频播放是否会开始/已经开始?