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

我已经阅读了几个post(比如这一个https://forums.developer.apple.com/thread/7598 )

application.applicationIconBadgeNumber = -1 

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

将应用程序徽章间接设置为-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上测试的方法。