Бывают случаи, когда локальное уведомление моего приложения запускается (отображается) дважды. Я использую не симулятор, а реальное устройство. Я пытался получить шаг воспроизведения, но я не мог этого сделать. Каждый раз, когда я выполняю процесс с помощью точки останова/nslog, я всегда получаю 1 запланированное уведомление. При этом я предполагаю, что я получу только 1 отображаемое/запускаемое уведомление. Однако бывают случаи, когда я получаю два уведомления. Я искал ответы в Интернете, и я не мог получить много информации. Кто-нибудь здесь испытал то же самое? Как вы смогли решить проблему?
- (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 вызывается каждый раз, когда приложение выходит из активного режима.