2011-01-19 11 views
3

私は、フォアグラウンドで動作しているときに特定の方法で機能するように設計されたアラーム時計アプリを持っています。ユーザーがアラームを設定すると、私のアプリはローカル通知を作成します。そのローカル通知が発生すると、didReceiveLocalNotificationメソッドを呼び出してユーザーに警告します。問題は、私のアプリがフォアグラウンドで実行されていて、プッシュ通知が別のアプリケーションから来た場合、モーダルプッシュ通知ビューが表示され、ローカル通知が発生したときにアプリに警告することができなくなります。私がプッシュ通知モーダルビューを閉じるとすぐに、私のアプリはローカル通知を発生させます。これを回避する方法はありますか?私は、もし私のアプリが、ユーザがそれを発射するようにスケジュールを設定したときに、アラームを設定しなければ、アラームを設定するという目的を全滅させるからです。iOSの開発:プッシュ通知が私のローカル通知が発射されるのを防ぎます

あなたの知恵に感謝します。

+0

NSPostNowを使用してNSNotificationQueueにエンキューすることが不確かな場合プッシュ通知イベントは、applicationDidResignActiveをトリガーしますか? – Seyther

答えて

1

私は周りに道があるとは思わない。音やバイブレーションをすることができるかもしれませんが、OSはすでにプッシュ通知アラートでユーザーの注意を喚起しているので、ユーザーが最初のものを扱うまで別のポストを表示するのは本当に役に立ちません。ユーザーが同時に2つのアラームをスケジュールした場合、どのように対処しますか?

  • Backgroungが

    あなたが起動

  • を実行していない
  • を一時停止実行
  • Backgroung

    • フォアグラウンドアクティブ
    • フォアグラウンド非アクティブ:

  • 4

    アプリケーションのための5つの状態がありますあなたのアプリケーションは、 "For eground Active "を選択すると、モーダルプッシュ通知が表示されるとアプリケーションは" Foreground Inactive "になります。ドキュメントで

    、Appleは(http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html)言った:

    それはときにそれを配信する場合アプリケーションはフォアグラウンドでアクティブではなく、アラートを表示したり、アプリケーションアイコンをバッジしたり、UILocalNotificationオブジェクトで指定されているサウンドを再生したりします。アプリケーションがフォアグラウンドで実行されている場合、アラート、バッジ、またはサウンドはありません。代わりに、デリゲートが実装している場合は、application:didReceiveLocalNotification:メソッドが呼び出されます。

    したがって、フォアグラウンドでは、application:didReceiveLocalNotification:はあなたのアプリがアクティブな場合にのみ呼び出され、モーダル通知を却下するとアクティブになります。

    これは境界線であり、この場合の解決策はありません。