在iOS后台模式下,继续播放来自html5播放器的音频

时间:2012-01-09 02:08:28

标签: ios cocoa-touch html5 audio background

我们使用Sencha touch在html5和javascript中构建了面向音乐的应用程序。为了分发,我们用UIwebView将它包装在xcode中。一切都运行良好,除了一件不起作用的事情:音频在多任务模式下播放。

我知道一般的想法:在info.plist中添加UIBackgroundModes。

完成。现在我们甚至可以在后台模式下播放音频。

直到我们到达歌曲的结尾。要开始下一首歌,我们必须再次将应用程序带到前台,或者我们可以点击iPhone音频控制器上的播放或“下一首歌”按钮。

经过一些研究后,我找到了一个很有前途的解决方法:“Entering background on iOS4 to play audio”,其中解决方法是编辑AVAudioSessionCategoryPlayback并使用UIBackgroundTaskIdentifier。 对我来说问题是(就像我到目前为止发现的任何其他修复方式一样),这些解决方案总是假设音频是用AVaudioPlayer或MPMusicPlayerController播放的。但在我的情况下,我既没有使用,我们的音频也是由包含在UIwebView中的html5播放器播放的。

当音频播放器是html5 / javascript播放器时,任何人都有关于如何在iOS多任务模式下继续播放音频的建议吗?

3 个答案:

答案 0 :(得分:4)

我的应用通过<audio>中托管的html中的UIWebView标记播放音频,并支持后台播放。

根据您的建议,您需要在plist中定义“App播放音频”背景模式。

尝试将此添加到您的applicationDidFinishLaunching:处理程序:

NSError *setCategoryError = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryError];

答案 1 :(得分:1)

谢谢,伙计们,但我最终只是在后台模式下让应用程序忙于循环。这足以弥合连接播放列表中下一首歌曲的时间。 我使用的代码与此类似: iPhone - Backgrounding to poll for events

答案 2 :(得分:0)

您可以尝试this,在onend事件中添加一项功能。