2017-01-24 4 views
1

したがって、AlwaysAuthorizationを要求したCoreLocationのため、私のアプリはバックグラウンドで実行されています。これにより、アプリが一時停止状態になることはありません。バックグラウンド状態のままで、ロケーションイベントを受信して​​います。いくつかのロケーションイベントの後、私はAVAudioSessionをアクティブにしていくつかのサウンドを再生したいと思います。私が前景で他のアプリを使用していて、このアプリがオーディオトラックを再生しているとき、セッションを適切に(このバックグラウンドアプリで)アクティブにする方法。私はYoutubeアプリでいくつかのビデオを見ていると私のバックグラウンドアプリは今すぐオーディオを再生する必要があると仮定します。この場合、オーディオセッションをアクティブにする際に問題があります。MixWithOthersを使用せずにAVAudioSessionをバックグラウンド状態でアクティブにすることはできますか?

この場合、リング/サイレントスイッチがオンになっていても再生する必要があるため、AudioToolbox再生エンジンは使用できません。

私はAVAudioSessionCategoryPlaybackカテゴリを使用する必要があることを知っています。他のアプリを同時に再生しないようにするため、MixWithOthersまたはDuckOthersカテゴリのオプションを使用していません。

UIBackgroundModesは、バックグラウンドでオーディオ再生を有効にしました。

アプリがバックグラウンドで、他のアプリが現在どのミキシングオプションも有効にしていない状態でオーディオを再生しているときに、そのセッションをアクティブにする方法。現在のフォアグラウンドアプリでオーディオセッションを中断する方法。私のバックグラウンドアプリで再生時間を有効にすることができます。再生が終わったら、バックグラウンドでオーディオセッションを無効にし、他のアプリに再生を再開できることを知らせることです。

答えて

0

AppDelegate.mクラスのdidFinishLaunchingWithOptionsメソッドに次の3行を追加し、アプリを再度テストします。同じ問題がある場合は教えてください。

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; 
[[AVAudioSession sharedInstance] setActive:YES error:nil]; 
[UIApplication sharedApplication].idleTimerDisabled = YES; 
+0

アプリが起動した直後にセッションをアクティブにするのはベストプラクティスではありません。それはまた動作しません。私は試した。このようにアプリを起動して音楽アプリに切り替えると、音楽が再生されます。私のアプリはオーディオセッションを中断します(私はアプリケーションで中断を正しく処理しています)。この状態では(フォアグラウンドのミュージックアプリとバックグラウンドでの私のアプリケーションで)、私のアプリが位置トリガを取得してスタートするのを待っていますいくつかのオーディオを再生します。バックグラウンドのアプリは、mixableカテゴリではなく、単にオーディオセッションを開始することはできません。 –

関連する問題