我们使用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多任务模式下继续播放音频的建议吗?
答案 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
事件中添加一项功能。