In my app, I'm receiving push notifications with badge number set to one. When app will start, it should set badges count to 0, so I'm using:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

And it works, but also it removes all notifications from notifications center.
Is there a way to clear badges without removing notifications?

有帮助吗?

解决方案

According to this topic:

How to clear badge number while preserving notification center

setting:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:-1];

should do the trick.

其他提示

With iOS9 directly setting badge to negative still clears notifications. You must fire empty UILocalNotification with negative badgenumber to achieve this.

let ln = UILocalNotification()
ln.applicationIconBadgeNumber = -1
UIApplication.sharedApplication().presentLocalNotificationNow(ln)

@feb for ios 9+ you need to set 0 not -1 for that you need to add version condition

    if #available(iOS 9.0, *) {
        UIApplication.shared.applicationIconBadgeNumber = 0
    }else{
        UIApplication.sharedApplication().applicationIconBadgeNumber = -1
    }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top