7

私は PhoneGap 1.8.1 で作成した PhoneGap アプリを持っており、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 が iOS 6 で PhoneGap 1.8.1 または 2.1 でロックされているときに、HTML 5 オーディオを再生するにはどうすればよいですか?

4

1 に答える 1

4

Application does not run in background = Yesバックグラウンドで実行する代わりに、アプリを強制的に終了しませんか?

それはあなたが望むものの反対ではありませんか?おそらく、そのキーを削除して、UIBackgroundModesセットをそのままにしてみてくださいaudio

編集

iOS 6以降、アプリケーションはバックグラウンドでオーディオを再生できるようにを設定AVAudioSessionCategoryする必要があるようです。AVAudioSessionCategoryPlaybackPhoneGap / Cordovaは、PhoneGap / Cordova Media APIを使用する場合にこれを行いますが、HTML5オーディオを使用する場合は設定されません。

ExampleHTML5AudioStreamingプロジェクトを使用してテストし、 UIBackgroundModes->audioのみを追加しましたが、ファイル(の下)にを明示的に設定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 に答える