2

アプリがバックグラウンドで実行されていて、同時に2つのローカル通知を受け取ったとします。Notification1のAlert1が表示され、次に、Alert1の上にNotification2のAlert2が表示されます。Alert2の[表示]をタップすると、アプリがフォアグラウンドに入り、didReceiveLocalNotificationNotification2が呼び出され、すべてが正常になります。

ただし、Alert1はまだ表示されています(閉じられたり表示されたりしたことがないため)。[表示]をタップしても何も起こらず、予想どおり、didReceiveLocalNotificationNotification1は呼び出されません。

次のいずれかの方法はありますか?

  1. すべてのアラートをクリアして、アプリがAlert2のフォアグラウンドに入ったときにAlert1が表示されないようにします
  2. Alert1が押されたときに、呼び出されdidReceiveLocalNotificationないため、「表示」のタップを処理します

ありがとう!

4

1 に答える 1

2

呼び出しcancelAllLocalNotificationsを行うと、通知が既に発生している場合でも、現在表示されているアラートも無視されます。

Local and Push Notification Programming Guideに記載されています。

アプリケーション オブジェクトで cancelLocalNotification: を呼び出すことにより、特定のスケジュールされた通知をキャンセルできます。また、cancelAllLocalNotifications を呼び出すことにより、スケジュールされたすべての通知をキャンセルできます。これらの方法はどちらも、現在表示されている通知アラートをプログラムで無視します。

したがって、cancelAllNotifications現在スケジュールされている通知を再スケジュールする必要があります。を試しましたが、通知が既に発生しているためcancelLocalNotification、配列に存在しなくなったため、通知への参照がありません。scheduledLocalNotifications

于 2011-04-22T21:17:29.127 に答える