【问题标题】:Continue playing audio from html5 player when in iOS background mode在 iOS 后台模式下继续从 html5 播放器播放音频
【发布时间】:2012-02-05 16:20:30
【问题描述】:

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

我知道大致思路:在 info.plist 中添加 UIBackgroundModes。

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

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

经过一些研究,我在“Entering background on iOS4 to play audio”找到了一个有希望的解决方法,其中的解决方法是编辑 AVAudioSessionCategoryPlayback 并使用 UIBackgroundTaskIdentifier。 我的问题是(就像我迄今为止发现的任何其他修复程序一样)这些解决方案总是假设音频是使用 AVaudioPlayer 或 MPMusicPlayerController 播放的。但在我的情况下,我都没有使用,我们的音频是由包装在 UIwebView 中的 html5 播放器播放的。

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

【问题讨论】:

    标签: ios cocoa-touch html audio background


    【解决方案1】:

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

    按照您的建议,您需要在 plist 中定义“应用播放音频”背景模式。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 这个变通办法仍然有效吗?你能提供你使用的代码吗?
      【解决方案3】:

      您可以尝试this,在onend 事件上添加一个函数。

      【讨论】:

        猜你喜欢
        • 2015-10-14
        • 2016-05-12
        • 2013-07-27
        • 2015-03-10
        • 1970-01-01
        • 2014-06-10
        • 2022-07-19
        • 2013-03-10
        • 2012-09-02
        相关资源
        最近更新 更多