ホームボタンまたはスリープ/スリープ解除ボタンをタップすると、「applicationWillResignActive」が呼び出されることを知っています。また、(ネイティブ呼び出しのような)中断が発生したときにも呼び出されます。しかし、どの方法でこのメソッドの結果を識別し、いくつかの異なる実装を行うことができますか?
1 に答える
すべての理由を直接特定することはできませんが、少し絞り込むことはできます。
ホーム ボタンが押され、アプリケーションがバックグラウンドに送られると、アプリはapplicationDidEnterBackground:
UIApplicationDelegate で呼び出しを受け取ります。applicationWillResignActive:
これは通話後に送信されるため、役に立たない場合があることに注意してください。
Audio Interruption のリスナーを登録することもできます
AudioSessionInitialize (
NULL, // 'NULL' to use the default (main) run loop
NULL, // 'NULL' to use the default run loop mode
audioSessionInteruptionListener, // a reference to your interruption callback
self // data to pass to your interruption listener callback
);
audioSessionInteruptionListener
が呼び出され、状態がkAudioSessionBeginInterruption
より前の場合applicationWillResignActive:
、通話またはアラームによって中断が発生したことがわかります。これ以上の情報はいただけないと思います。
編集
実際には、もう少し進んで、電話とアラームの割り込みを特定できると思います。現在、これはテストされていません。これは、より多くの調査の開始点を提供するためのものです。
音声ルートをトラップするためにコールバックを登録したことを覚えています。電話がかかってくると、ルーティングされる音声がスピーカー/イヤホンからなし、レシーバーに変わりました。したがって、上記の方法を使用して AudioInterruption をトラップし、オーディオ ルートの変更をトラップできると思います。オーディオ ルートがレシーバーになる場合、割り込みは電話でした。そうでなければ、それはアラームのような別のものでした。
私は iOS 5.0 を対象としていたので、以前のバージョンでは利用できない可能性があります。ドキュメントで確認する必要があります。