アプリのローカル通知が 2 回発火 (表示) されることがあります。私はシミュレーターではなく、実際のデバイスを使用しています。再現ステップを取得しようとしてきましたが、できませんでした。ブレークポイント/nslog を使用してプロセスを実行するたびに、常に 1 つの通知がスケジュールされます。これにより、表示/起動される通知は1つだけになると思います。ただし、通知が 2 つ届く場合があります。インターネットで回答を検索しましたが、多くの情報を得ることができませんでした。ここで同じことを経験した人はいますか?どうやって問題を解決できましたか?
- (void)scheduleAllNotifications
{
if (_isEnabled && [[NSUserDefaults standardUserDefaults] boolForKey:NotificationsUserDefaultsKey]) {
[self updateFireDates];
for (NSDate *fireDate in fireDates) {
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.fireDate = fireDate;
notification.alertBody = @"Message";
notification.alertAction = @"View";
notification.soundName = @"notificationsound.mp3";
[notifications addObject:notification];
[[UIApplication sharedApplication]scheduleLocalNotification:notification];
}
}
}
- (void)cancelAllNotifications
{
[[UIApplication sharedApplication] cancelAllLocalNotifications];
[notifications removeAllObjects];
}
- (void)updateFireDates
{
[fireDates removeAllObjects];
NSDate *now = [NSDate date];
NSDate *fireDate = [NSDate dateWithTimeInterval:THREEDAYS sinceDate:now];
if (fireDate){[fireDates addObject:fireDate];}
}
アプリがアクティブになるたびに cancelAllNotifications が呼び出されます アプリがアクティブに辞退するたびに shceduleAllNotifications が呼び出されます