2009-12-13 10 views
9

iPhoneがスリープ状態になったことを検出し、applicationWillResignActiveとapplicationDidBecomeActiveを使用してスリープから復帰したことを検出できます。しかし、どのような中断があったのかをどうやって調べるのですか?私はオーディオプレーヤーのアプリケーションを作っており、iPhoneがスリープ状態になるときにオーディオの再生を維持する必要があります(これは私にはわかっています)。しかし、私はメッセージ、アラームまたは低バッテリ割り込みが発生すると、オーディオを中断する必要があります。また、イベントが終了したらオーディオを再開する必要があります。iPhoneの割り込みの種類を検出する

どうすればこれらの異なる割り込みを区別できますか。

答えて

5

その情報はおそらくあなたのアプリでは利用できませんが、試してみるべきことがいくつかあります。 applicationWillResignActive:

  1. 、任意のヒントがあるかどうかを確認するためにNSNotificationのオブジェクトとのUserInfoプロパティを確認してください。

  2. 登録は、デフォルトの通知センターにポストすべて通知を受信する:

    何がポストされたとき、あなたのメソッドが呼び出されます
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveNotification:) name:nil object:nil]; 
    

。通知オブジェクトとuserInfoディクショナリを記録すると、役に立つ通知が表示されることがあります。見つけた場合は、それだけで登録することができます。

  1. これは最もハッキーですが、メッセージやバッテリの警告である場合に表示される警告にアクセスできる場合があります。アラートは、アプリケーションのメインUIWindow上のUIWindowに表示されます。あなたはUIWindowDidBecomeVisibleNotificationに登録してから、ウィンドウのサブビューを見てアラートや他の有用なヒントを見つけることができるかどうかを調べることができます。

上記の方法はすべて、文書化されていない動作に依存しており、提出がApp Storeから拒否される可能性があります。それらのどれもプライベートメソッド呼び出しを伴いませんが、ドキュメント化されていない通知名を見ることはプライベートAPIとみなすことができます。結局のところ、アップルの意見は重要なものだけです。

個人的には、システムが変更された場合にコードが正常に機能しないことを確かめます。

+1

AとBを試しましたが、すべて空です。 userinfoに説明またはキーと値のペアがありません。どちらも対象ではありません。その奇妙なリンゴは、このようなシンプルな機能を置いていなかった。それはあまりにもハッキリのように、私にさえ、Cを試していない。 – Prashant

+1

Cを再考することができます:あなたのアプリに表示されている*警告が音楽を一時停止する理由であると単純に仮定した場合、あなたは文書化されていないことは一切行いません。ハックされるアラート・テキストを読むのは、ビュー階層を突き止めるだけです。 – benzado

関連する問題