8

We all know that this method [UIApplication sharedApplication].applicationIconBadgeNumber = 0; could remove all remote notifications of our application from the notification center. However, for some reason, I want to remove the one which user taps on the notification center, and leave the others.

Does it have any method to do it?

Don_Chen
  • 987
  • 2
  • 8
  • 16

2 Answers2

8

With introduction of UNUserNotificationCenter for iOS 10 and above, it is now possible to remove few or all remote notifications of your app.

UNUserNotificationCenter documentation

With a shared singleton instance of this class, it is possible to manage delivered remote notifications on the device. Specifically, the following methods can be used: func removeDeliveredNotifications(withIdentifiers: [String]) if you want to remove specific notification of your app, OR func removeAllDeliveredNotifications() to remove all notifications of your app.

Mehul Parmar
  • 3,599
  • 3
  • 26
  • 42
4

If you're simply looking to remove one number from the badge number:

[UIApplication sharedApplication].applicationIconBadgeNumber = MAX([UIApplication sharedApplication].applicationIconBadgeNumber - 1, 0);

If you're asking how to programmatically remove a single notification from notification center, it can't be done in code. Apparently in iOS8 the OS will remove a single notification when a user taps on it. Otherwise it's not possible to be handled by you.

See: https://stackoverflow.com/a/10569847/620577

Community
  • 1
  • 1
Kyle Robson
  • 3,060
  • 24
  • 20