7

我有一个 PhoneGap 应用程序,它是在 PhoneGap 1.8.1 下编写的,它在 iOS 5.1 下运行良好。

我需要更改应用程序,因此下载了最新的 Xcode 4.5 和 iOS 6 SDK。但是当我构建应用程序并将其部署到我的 iPhone 4s 时,当手机锁定时,HTML 5 音频将无法播放。

我尝试升级应用程序以使用 PhoneGap 2.1.0,但是当手机被锁定时,应用程序仍然不会播放音频。(这是来自我的服务器的 mp3 文件流。)

在模拟器中一切正常,但在我运行 iOS 6 的 iPhone 4s 上不起作用。

我已将必需的后台模式设置为应用程序播放音频并且应用程序不在后台运行 = 是。它曾经在 iOS 5.1 下工作,但在 iOS 6 下不工作。我也尝试修改sound.m一些推荐的文件。即使我在 iOS 5.1 下不需要这样做

我尝试了一堆我在互联网上找到的示例,但似乎没有一个在 iOS 6 中有效。并允许 HTML 5 音频在手机锁定的情况下流式传输。

当 iPhone 在 PhoneGap 1.8.1 或 2.1 下的 iOS 6 中锁定时,我需要做什么才能播放 HTML 5 音频?

4

1 回答 1

4

Application does not run in background = Yes强制应用程序终止而不是在后台运行?

这不是你想要的相反吗?也许尝试删除该键并将UIBackgroundModes设置保留为audio

编辑

看来,从 iOS 6 开始,您的应用程序必须将 设置AVAudioSessionCategoryAVAudioSessionCategoryPlayback能够在后台播放音频。当您使用 PhoneGap/Cordova Media API 时,PhoneGap/Cordova 会执行此操作,但在使用 HTML5 音频时,它永远不会被设置。

我使用我的ExampleHTML5AudioStreaming项目进行了测试,并在文件中添加了UIBackgroundModes-> audioonly 但明确地将其设置为AVAudioSessionCategory(在 下)。AVAudioSessionCategoryPlaybackAppDelegate.mProjectName/Classes

我首先在 AppDelegate 中导入了 AVFoundation:

#import <AVFoundation/AVFoundation.h>

然后我将以下内容添加到application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

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

根据这个答案:https ://stackoverflow.com/a/12414719/878602

然后按预期在后台播放音频。

看起来没有为此向 Cordova 提交错误。我看看能不能寄一份。

于 2012-10-08T06:25:02.850 回答