Je souhaite supprimer les anciennes notifications de mon application depuis iOS 5 Notification Center. Puis-je faire ceci? Si c'est le cas, comment?
Réponses
Trop de publicités?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];
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];
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.