清除当地通知的应用徽章
我试图用UILocalNotification
清除我的应用程序的“未读”徽章。 从逻辑上讲,你可能会认为这是通过将UILocalNotification
实例的applicationIconBadgeNumber
设置为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]; }
我有同样的问题。 当从本地通知中设置徽章时,将其设置为0是“不变”的默认设置,而直接从应用程序中直接进行清除。 通过本地通知将其设置为负数解决了问题。
尝试:
clearEpisodeNotification.applicationIconBadgeNumber = -1;
是的,可以从应用程序本身清除徽章。
我在我的一个应用程序中使用下面的代码,并按预期工作(即清除徽章):
//clear app badge [UIApplication sharedApplication].applicationIconBadgeNumber=0;