【问题标题】:Can't clear badge number at specified time on iOS 9.0.2 / 9.1?在 iOS 9.0.2 / 9.1 上无法在指定时间清除徽章编号?
【发布时间】:2016-02-01 20:14:30
【问题描述】:

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

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 和 8 上,将徽章编号设置为 0 即可很好地清除徽章。

对于 iOS 9 的变通方法有什么建议吗?

干杯!

【问题讨论】:

    标签: ios uilocalnotification


    【解决方案1】:

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

    secondNotification.applicationIconBadgeNumber = -1;
    

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

    【讨论】:

    • 我认为这实际上可能是 UILocalNotification 中的一个错误 - 来自文档“此属性的默认值为 0,这意味着不显示徽章。” - 但是,在 Apple 修复它之前,您的解决方案确实可以解决这个问题,所以谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 2012-02-02
    • 1970-01-01
    • 2020-12-26
    • 2022-08-02
    • 1970-01-01
    • 2013-01-10
    相关资源
    最近更新 更多