Effacer le badge de l'application avec des notifications locales

J'essaie d'effacer le badge "non lu" de mon application avec un UILocalNotification . Logiquement, vous penseriez que cela serait fait en plaçant applicationIconBadgeNumber d'une instance UILocalNotification à 0. Mais cela ne fonctionne pas, et les docs pour applicationIconBadgeNumber disent "La valeur par défaut est 0, ce qui signifie" pas de changement "."

Alors, n'y a-t-il vraiment aucun moyen d'effacer un badge avec des notifications locales une fois qu'il a été défini?

Mise à jour: un code simple:

 -(void)applicationDidFinishLaunching { // Set the appication icon badge to 1 in 10 minutes, using a local notification so it works in the background: // This works fine. UILocalNotification *episodeNotification = [[UILocalNotification alloc] init]; episodeNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:(60 * 10)]; episodeNotification.timeZone = [NSTimeZone defaultTimeZone]; episodeNotification.applicationIconBadgeNumber = 1; [[UIApplication sharedApplication] scheduleLocalNotification:episodeNotification]; [episodeNotification release]; // Clear the application icon badge in 20 minutes, again using a local notifcation so it works in the background: // This doesn't work. According to the docs for local notification it's not supposed to // because (applicationIconBadgeNumber = 0) means "Do not change the badge" // I'm looking for an alternative if it exists. UILocalNotification *clearEpisodeNotification = [[UILocalNotification alloc] init]; clearEpisodeNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:(60 * 20)]; clearEpisodeNotification.timeZone = [NSTimeZone defaultTimeZone]; clearEpisodeNotification.applicationIconBadgeNumber = 0; [[UIApplication sharedApplication] scheduleLocalNotification:clearEpisodeNotification]; [clearEpisodeNotification release]; } 

J'ai eu le même problème. Lors de la définition du badge à partir d'une notification locale, la valeur 0 est la valeur par défaut pour 'aucune modification', tandis que le faire directement à partir de l'application l'efface. Le définir sur un nombre négatif via une notification locale a résolu le problème.

essayer:

 clearEpisodeNotification.applicationIconBadgeNumber = -1; 

Oui, il est possible d'effacer le badge de l'application elle-même.

J'utilise le code ci-dessous dans l'une de mes applications, et cela fonctionne comme prévu (c'est-à-dire efface le badge):

 //clear app badge [UIApplication sharedApplication].applicationIconBadgeNumber=0;