2

アプリがバックグラウンドで実行されていて、同時に2つのローカル通知を受け取ったとします。 Notification1のAlert1が表示され、Alert1の上にNotification2のAlert2が表示されます。私がAlert2の "View"をタップすると、私のアプリはフォアグラウンドに入り、Notification2のためにdidReceiveLocalNotificationが呼び出されます。アプリが実行されていないときに起動し、アプリの実行中に表示される通知アラートを処理する

しかし、Alert1はまだ表示されていません(閉じられたり表示されなかったため)。 「表示」をタップすると、何も起こりません。また、予期したとおり、通知1のdidReceiveLocalNotificationは呼び出されません。

のいずれかへの道があります:

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

ありがとうございます!

+0

2つのアラートが同時に表示されますか?あなたの質問にスクリーンショットを追加できますか? –

+0

2つ目のアラートが他のアラートの上に表示されるため、一方が表示されますが、他方は依然として表示されます。最初のアラートで「表示」をタップすると、didReceiveLocalNotificationが呼び出され、アプリがフォアグラウンドに入力されます。最初のアラートが消え、2番目のアラートが表示されます。 – Woogie

+0

'cancelAllLocalNotifications'を呼び出すと、すでに表示されているアラートは、通知が既に開始されていても解除されます。 それはローカルで述べたと通知プログラミングガイドをプッシュしています: _YouはcancelLocalNotificationを呼び出すことにより、特定のスケジュールの通知をキャンセルすることができます。アプリケーションのオブジェクトの上に、そしてあなたがcancelAllLocalNotificationsを呼び出すことにより、すべてのスケジュールの通知をキャンセルすることができます。これらのメソッドは両方とも、現在表示されている通知アラートをプログラムで却下します。_ したがって、私は 'cancelAllNotifications'を実行し、現在のスケジュール通知を再スケジュールする必要があります。 – Woogie

答えて

2

cancelAllLocalNotificationsを呼び出すと、すでに通知があったとしても、現在表示されている警告が解除されます。

それはLocal and Push Notification Programming Guideで述べています:

あなたは cancelLocalNotificationを呼び出すことによって 通知をスケジュールし、特定取り消すことができます。 アプリケーションオブジェクト上を、そしてあなたが cancelAllLocalNotificationsを呼び出すことによって すべてのスケジュールの通知をキャンセルすることができます。両方とも これらのメソッドは、プログラムによっても表示されます 現在表示されている通知を閉じる 通知アラートを閉じます。

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

関連する問題