Очистить значок приложения с локальными уведомлениями
Я пытаюсь очистить "непрочитанный" значок моего приложения с помощью UILocalNotification
, Логично, что вы думаете, что это будет сделано путем установки applicationIconBadgeNumber
из UILocalNotification
экземпляр до 0. Но это не работает, и документы для applicationIconBadgeNumber говорят: "Значение по умолчанию равно 0, что означает" без изменений "."
Так неужели нет способа убрать значок с локальными уведомлениями после его установки?
Обновление: простой код:
-(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];
}
2 ответа
У меня такая же проблема. При установке значка из локального уведомления установка его в 0 является значением по умолчанию для "без изменений", в то время как выполнение этого прямо из приложения очистит его. Установка отрицательного числа через локальное уведомление решила проблему.
пытаться:
clearEpisodeNotification.applicationIconBadgeNumber = -1;
Да, можно убрать значок из самого приложения.
Я использую приведенный ниже код в одном из моих приложений, и он работает как положено (то есть очищает значок):
//clear app badge
[UIApplication sharedApplication].applicationIconBadgeNumber=0;