1

初めて UILocalNotifications を使用しています。主に繰り返し通知を処理します。1つのことを除いて、ほとんどすべてが理にかなっています。

Apple のドキュメントには、ローカル通知が発生したときにローカル通知を処理するためのいくつかのケースが記載されています。

まず、ユーザーがアプリ外で「通知をタップ」した場合:

通知がアラートで、ユーザーがアクション ボタンをタップすると (または、デバイスがロックされている場合は、アクション スライダーをドラッグして開くと)、アプリケーションが起動します。application:didFinishLaunchingWithOptions: メソッドでは、アプリケーション デリゲートは UIApplicationLaunchOptionsLocalNotificationKey キーを使用して、渡されたオプション ディクショナリから UILocalNotification オブジェクトを取得できます。デリゲートは、通知のプロパティを検査できます。また、通知の userInfo ディクショナリにカスタム データが含まれている場合は、そのデータにアクセスし、それに応じて処理できます。

また、ユーザーがアプリ内にいるときに何が起こるかについても述べています。

システムが通知を配信するときにアプリケーションが最前面に表示されている場合、アラートは表示されず、アイコンもバッジも表示されず、サウンドも再生されません。ただし、 application:didReceiveLocalNotification: は、アプリケーション デリゲートが実装している場合に呼び出されます。UILocalNotification インスタンスがこのメソッドに渡され、デリゲートはそのプロパティをチェックしたり、userInfo ディクショナリから任意のカスタム データにアクセスしたりできます。

どちらの場合でも、開発者は uilocalnotification にアクセスして、それをどうするかを決定できます。ただし、3 番目のケースでは、ユーザーがアプリの外部で通知を見て無視し、後でアプリを起動した場合、どの通知が以前に発生したかをアプリケーションが認識できるようにするメソッドは呼び出されませんか?

最初は、このステートメントがその動作を説明していると思いましたが、今ではよくわかりません。

一方、ローカル通知がアプリケーション アイコンにバッジを付けるだけで、それに応答してユーザーがアプリケーションを起動した場合、application:didFinishLaunchingWithOptions: メソッドが呼び出されますが、オプション ディクショナリには UILocalNotification オブジェクトは含まれません。

3番目のケースをどのように処理できますか? どのローカル通知が発生したかを知るにはどうすればよいですか? リストを反復処理して、すべての時間を自分で確認する必要がありますか? これを達成するためのより良い方法はありますか?

4

1 に答える 1

0

通知で何が起こっているかを追跡する必要があります。これが意味することは、通知が発生し、ユーザーが通知のためにアプリを起動せず、通知時にアプリが実行されていなかったため、ソースを確認して以前に予定された通知の発行日はすでに過ぎています。

于 2013-05-25T21:41:28.007 に答える