初めて UILocalNotifications を使用しています。主に繰り返し通知を処理します。1つのことを除いて、ほとんどすべてが理にかなっています。
Apple のドキュメントには、ローカル通知が発生したときにローカル通知を処理するためのいくつかのケースが記載されています。
まず、ユーザーがアプリ外で「通知をタップ」した場合:
通知がアラートで、ユーザーがアクション ボタンをタップすると (または、デバイスがロックされている場合は、アクション スライダーをドラッグして開くと)、アプリケーションが起動します。application:didFinishLaunchingWithOptions: メソッドでは、アプリケーション デリゲートは UIApplicationLaunchOptionsLocalNotificationKey キーを使用して、渡されたオプション ディクショナリから UILocalNotification オブジェクトを取得できます。デリゲートは、通知のプロパティを検査できます。また、通知の userInfo ディクショナリにカスタム データが含まれている場合は、そのデータにアクセスし、それに応じて処理できます。
また、ユーザーがアプリ内にいるときに何が起こるかについても述べています。
システムが通知を配信するときにアプリケーションが最前面に表示されている場合、アラートは表示されず、アイコンもバッジも表示されず、サウンドも再生されません。ただし、 application:didReceiveLocalNotification: は、アプリケーション デリゲートが実装している場合に呼び出されます。UILocalNotification インスタンスがこのメソッドに渡され、デリゲートはそのプロパティをチェックしたり、userInfo ディクショナリから任意のカスタム データにアクセスしたりできます。
どちらの場合でも、開発者は uilocalnotification にアクセスして、それをどうするかを決定できます。ただし、3 番目のケースでは、ユーザーがアプリの外部で通知を見て無視し、後でアプリを起動した場合、どの通知が以前に発生したかをアプリケーションが認識できるようにするメソッドは呼び出されませんか?
最初は、このステートメントがその動作を説明していると思いましたが、今ではよくわかりません。
一方、ローカル通知がアプリケーション アイコンにバッジを付けるだけで、それに応答してユーザーがアプリケーションを起動した場合、application:didFinishLaunchingWithOptions: メソッドが呼び出されますが、オプション ディクショナリには UILocalNotification オブジェクトは含まれません。
3番目のケースをどのように処理できますか? どのローカル通知が発生したかを知るにはどうすればよいですか? リストを反復処理して、すべての時間を自分で確認する必要がありますか? これを達成するためのより良い方法はありますか?