我已经阅读了几个帖子(比如这个https://forums.developer.apple.com/thread/7598)设置
application.applicationIconBadgeNumber = -1
applicationDidBecomeActive
或applicationWillEnterForeground
上的将允许我清除徽章编号,而不会从通知中心删除通知。当我将application.applicationIconBadgeNumber
设置为负数(例如-1)时,它会清除Notification Center
中的所有通知。是否有其他方法可以在不删除notifications
的情况下清除徽章编号?
答案 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;