问题
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?
回答1:
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
回答2:
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.
来源:https://stackoverflow.com/questions/27591665/how-to-remove-specific-remote-notification-in-the-notification-center