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

Can't clear badge number at specified time on iOS 9.0.2 / 9.1?

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

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 以外的任何整数,徽章编号会更新。

我在 iOS 9.0.2 和 iOS 9.1 上看到这些症状。在 iOS 7 和 8 上,将徽章编号设置为 0 可以很好地清除徽章。

关于解决 iOS 9 的任何建议?

干杯!

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

secondNotification.applicationIconBadgeNumber = -1;

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