无法在iOS 9.0.2 / 9.1上的指定时间清除徽章编号?

时间:2015-11-02 01:15:07

标签: ios uilocalnotification

我遇到以下代码问题。我的目标是在指定时间清除应用程序的徽章计数:

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问题的任何建议吗?

干杯!

1 个答案:

答案 0 :(得分:2)

即使我遇到同样的问题,将其设置为0也不会删除应用徽章,因为0表示默认或无更改。相反,您可以尝试将其设置为负数。 尝试

secondNotification.applicationIconBadgeNumber = -1;

这应该有效。希望它有所帮助!