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;