2016-08-08 6 views
2

私のアプリでは、バックグラウンドサービスを実行しています。他のアプリがオーディオを再生している場合、サービスに通知します。電話または音楽アプリまたはラジオアプリが音声を再生しています。オーディオセッションの中断の通知

AVAudioSessionクラスのドキュメントから、このAVAudioSessionInterruptionNotificationが必要なものだと思われます。

だから、私が試した:

-(void)initialization{ 
    [[NSNotificationCenter defaultCenter] addObserver:self 
                selector:@selector(handleAudioSessionInterruption:) 
                 name:AVAudioSessionInterruptionNotification 
                 object:nil]; 
} 

-(void)handleAudioSessionInterruption:(NSNotification*)notification{ 
    NSLog("Get notified for interruption"); 
} 

私はiPhone上で私のアプリを実行します。私が発信/着信電話をかけるとき、私のアプリは音声セッションの中断を通知されます。うまくいく!

しかし、ラジオ/音楽アプリを開いてオーディオを再生すると、アプリに通知されません。どうして?音楽/ラジオアプリで音声が再生されているときに、アプリにどのように通知することができますか?ドキュメントで述べたように::

答えて

0

/*登録されたリスナーは、システムがオーディオセッションを中断したときと 中断が終了したときに通知されます。通知のuserInfoディクショナリで割り込みタイプ(beginまたはend)を確認します。 終了割り込み通知の場合、AVAudioSessionInterruptionOptionsのuserInfoディクショナリで、 にオーディオの再生を再開する必要があるかどうかを確認します。 */

基本的に、他のアプリがオーディオセッションを引き継ぐ場合、中断通知が送信されます。

たとえば、Appleのデフォルトの音楽アプリを開くか、デフォルトのカメラアプリケーションから動画を録画してみてください。彼らはオーディオセッションを引き継いで、同じことをあなたに通知します。

ちょうど良い側にいる:: 通知を受信して​​いるインスタンスはメモリ内にまだ存在しているはずです。

関連する問題