Question

Je suis en train d'effacer badge « non lu » de mon application avec un UILocalNotification. Logiquement on pourrait penser que cela serait fait par la mise en applicationIconBadgeNumber d'une instance de UILocalNotification à 0. Mais cela ne fonctionne pas, et la documentation pour applicationIconBadgeNumber dire « La valeur par défaut est 0, ce qui signifie » aucun changement « ."

Alors, est-il vraiment aucun moyen de dégager un badge avec les notifications locales une fois qu'il a été mis en?

Mise à jour: Une partie du 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];
}
Était-ce utile?

La solution

J'ai eu le même problème. Lors de la configuration du badge à partir d'une notification locale, la mise à 0 est la valeur par défaut pour « sans changement », tout en le faisant directement à partir de l'application le dissiperait. Réglage à un nombre négatif par une notification locale a résolu le problème.

essayer:

clearEpisodeNotification.applicationIconBadgeNumber = -1;

Autres conseils

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 (par exemple le badge efface):

//clear app badge
[UIApplication sharedApplication].applicationIconBadgeNumber=0;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top