notification locale "didReceiveLocalNotification" appelle deux fois

Je gère les notifications locales en utilisant:

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif 

Et pour planifier une notification locale:

 - (void)scheduleNotificationWithInterval:(int)minutesBefore { UILocalNotification *localNotif = [[UILocalNotification alloc] init]; if (localNotif == nil) return; NSDate *fireDate = [NSDate date]; localNotif.fireDate = [fireDate dateByAddingTimeInterval:minutesBefore*60]; localNotif.timeZone = [NSTimeZone defaultTimeZone]; localNotif.repeatInterval = kCFCalendarUnitMinute; localNotif.alertBody = [NSSsortingng ssortingngWithFormat:NSLocalizedSsortingng(@"LocalEvent notification in %i minutes.", nil),minutesBefore]; localNotif.alertAction = NSLocalizedSsortingng(@"View Details", nil); localNotif.applicationIconBadgeNumber = 1; NSDictionary *infoDict = [NSDictionary dictionaryWithObjectsAndKeys:@"This is dict, you can pass info for your notification",@"info",nil]; localNotif.userInfo = infoDict; [[UIApplication sharedApplication] scheduleLocalNotification:localNotif]; [localNotif release]; NSLog(@"Event scheduled"); } 

Lorsque je reçois une notification, didReceiveLocalNotification: est appelée deux fois.

Est-ce que je fais quelque chose de mal?

S'il vous plaît aider.

Merci.

Je pense qu'il y a un bug connu dans le simulateur qui triggers deux fois la méthode de notification des delegates. Cela ne devrait pas arriver sur l'appareil, attaché à XCode ou non.

Je faisais aussi face au même problème et la solution que je trouve est que écrire ce code dans didReceiveLocalNotification

 if (state == UIApplicationStateActive) { NSLog(@"UIApplicationStateActive"); } else if(state == UIApplicationStateInactive){ NSLog(@"UIApplicationStateInActive"); } 

ici dans ces conditions je viens d'écrire le code que je veux que mon application à faire sur la notification, en mode actif et en mode inactif

Je soupçonne que la notification est redéclenchée tant qu'elle est dans la même seconde encore. Je l'ai corrigé en mettant le fireDate à zéro dans le gestionnaire:

 - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:notification.alertAction message:notification.alertBody delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alertView show]; notification.fireDate = nil; } 

J'ai eu le même délivré. Cela a été causé en appelant deux fois "registerUserNotificationSettings" dans "didFinishLaunchingWithOptions" de l'AppDelegate. Cependant, supprimer simplement l'appel en double n'a pas encore résolu le problème. J'ai dû supprimer l'application, puis rebuild. Ce n'est qu'alors que le problème de double notification locale a été résolu.