清除applicationIconBadgeNumber而不删除无效的通知

时间:2016-06-13 12:12:55

标签: ios swift badge

我已经阅读了几个帖子(比如这个https://forums.developer.apple.com/thread/7598)设置

    application.applicationIconBadgeNumber = -1
applicationDidBecomeActiveapplicationWillEnterForeground上的

将允许我清除徽章编号,而不会从通知中心删除通知。当我将application.applicationIconBadgeNumber设置为负数(例如-1)时,它会清除Notification Center中的所有通知。是否有其他方法可以在不删除notifications的情况下清除徽章编号?

2 个答案:

答案 0 :(得分:4)

将应用程序徽章间接设置为-1,并为我提供了一个空的本地通知,但是在清除应用程序徽章计数时,它会在托盘中保留通知。

if(badgeCount == 0) {
   //set application badge indirectly with UILocalNotification
   UILocalNotification *ln = [[UILocalNotification alloc]init];
   ln.applicationIconBadgeNumber = -1;
   [[UIApplication sharedApplication] presentLocalNotificationNow:ln];
}
else {
   [[UIApplication sharedApplication] setApplicationIconBadgeNumber:badgeCount];
}

Swift版

if badgeCount == 0 {
    //set application badge indirectly with UILocalNotification
    var ln = UILocalNotification()
    ln.applicationIconBadgeNumber = -1
    UIApplication.sharedApplication().presentLocalNotificationNow(ln)
}
else {
    UIApplication.sharedApplication().applicationIconBadgeNumber = badgeCount
}

在iOS 9和10上测试的方法。

答案 1 :(得分:1)

JsonArrayRequest

我已经在iOS 12.2中对其进行了测试,并且可以通过远程通知正常运行。

通过将接收到的远程通知保存在通知中心中来清除徽章计数。

代码段供参考:

UIApplication.sharedApplication.applicationIconBadgeNumber = -1;