そのため、iOS 6 で実行されている私のアプリでは、すべてがオーディオで正常に動作しているようです。古い C API 形式を使用して、コールバックを使用して割り込みをキャッチします。via: のセットアップAudioSessionInitialize(NULL, NULL, interruptionListenerCallback, (__bridge void *)self)
は素晴らしかったです。ただし、iOS 7 SDK を使用すると、デバイスが通話を受信したときやアラームが鳴ったときに割り込みコールバックが呼び出されないようです。
いろいろ調べたところ、古い C API は廃止され、新しい AVAudioSession 関数に移行する必要があると聞きました。さらに読むと、AVAudioSession デリゲートは非推奨であり、NSNotification
forを使用しAVAudioSessionInterruptionNotification
て割り込みをキャッチし、必要な処理を行う必要があることが明らかになりました。
私にとっては、この通知が実際に発生することはないように思われるため、適切に中断されることはなく、通話が終了した後にすべての音声が壊れます。
私は次のように通知にサインアップします:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(AudioInterruption:) name:AVAudioSessionInterruptionNotification object:nil];
今のところ、このAudioInterruption:
関数は起動されたことをログに記録するだけです。ログもブレークポイントもトリガーされていません。
明確にするために、最初はオーディオの再生と録音は正常に機能します。割り込みが発生した場合 (着信コールやアラームなど)、割り込み通知は発生しません。さらに周囲のコードが必要な場合は、お知らせください。