我遇到以下代码问题。我的目标是在指定时间清除应用程序的徽章计数:
NSInteger firstBadgeNumber = 5;
NSInteger secondBadgeNumber = 0;
UILocalNotification *firstNotification = [[UILocalNotification alloc] init];
firstNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow: 1];
firstNotification.timeZone = [NSTimeZone defaultTimeZone];
firstNotification.applicationIconBadgeNumber = firstBadgeNumber;
[[UIApplication sharedApplication] scheduleLocalNotification:firstNotification];
UILocalNotification *secondNotification = [[UILocalNotification alloc] init];
secondNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow: 31];
secondNotification.timeZone = [NSTimeZone defaultTimeZone];
secondNotification.applicationIconBadgeNumber = secondBadgeNumber;
[[UIApplication sharedApplication] scheduleLocalNotification:secondNotification];
第一个徽章设置正常,但30秒后,当第二个徽章要发射时,徽章编号保持为5.有趣的是,如果我将secondBadgeNumber设置为0以外的任何int,则徽章编号会更新。
我在iOS 9.0.2和iOS 9.1上看到了这些症状。在iOS 7和iOS上8将徽章编号设置为0可以清除徽章。
有关解决iOS 9问题的任何建议吗?
干杯!
答案 0 :(得分:2)
即使我遇到同样的问题,将其设置为0也不会删除应用徽章,因为0表示默认或无更改。相反,您可以尝试将其设置为负数。 尝试
secondNotification.applicationIconBadgeNumber = -1;
这应该有效。希望它有所帮助!