49 votes

Puis-je supprimer par programmation les notifications de mon application du centre de notifications iOS 5?

Je souhaite supprimer les anciennes notifications de mon application depuis iOS 5 Notification Center. Puis-je faire ceci? Si c'est le cas, comment?

75voto

voidStern Points 2582

Pour supprimer les notifications du Centre de notifications, définissez simplement le numéro de badge de votre icône sur zéro.

 [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
 

Cela ne fonctionne que si le numéro change. Par conséquent, si votre application n'utilise pas le numéro de badge, vous devez d'abord le définir, puis le réinitialiser.

 [[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
 

19voto

Gabriel Reid Points 1598

De façon plus simple méthode que j'utilise (et ne nécessite pas de badges) est de réinitialiser le tableau de l'horaire des notifications locales à elle-même, comme suit:

  UIApplication* application = [UIApplication sharedApplication];
  NSArray* scheduledNotifications = [NSArray arrayWithArray:application.scheduledLocalNotifications];
  application.scheduledLocalNotifications = scheduledNotifications;

Ceci a pour effet que toutes les notifications programmées restent valables, alors que tous les "vieux" notifications qui sont présents dans le Centre de notifications sont supprimés. Cependant, il a également la sensation de quelque chose qui pourrait changer dans une prochaine version d'iOS, comme je n'ai pas vu toute la documentation de ce comportement.

Bien sûr, si vous souhaitez supprimer toutes les notifications, c'est simplement le suivant:

  [[UIApplication sharedApplication] cancelAllLocalNotifications];

3voto

Henrik Strand Points 44

Oui, vous pouvez annuler des notifications spécifiques ou toutes locales en appelant

 [[UIApplication sharedApplication] cancelLocalNotification:...]; 
 

ou

 [[UIApplication sharedApplication] cancelAllLocalNotifications];
 

1voto

piz78 Points 11

Pour moi, cela ne fonctionnait qu'avec l'envoi d'une notification locale avec seulement un badge comme celui-ci:

     if([UIApplication sharedApplication].applicationIconBadgeNumber == 0) {
        UILocalNotification *singleLocalPush = [[UILocalNotification alloc] init];
        singleLocalPush.fireDate = [NSDate dateWithTimeIntervalSinceNow:1];
        singleLocalPush.hasAction = NO;
        singleLocalPush.applicationIconBadgeNumber = 1;
        [[UIApplication sharedApplication] scheduleLocalNotification:singleLocalPush];
        [singleLocalPush release];
    } else {
        [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
    }
 

Et dans la méthode

     -(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
 

Je peux remettre le badge à 0.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X