以编程方式从通知中心删除远程通知

Programmatically delete Remote Notifications from Notification Centre

我们如何务实地从通知中心删除为我的应用程序发送的任何待处理的远程通知。我想在应用启动时清除它们。

我试过 [[UIApplication sharedApplication] cancelAllLocalNotifications]; API 但没用。

PS:此问题特定于 iOS 10,旧线程与此线程不重复。

您可以使用这些简单的代码行清除来自通知中心的所有通知

[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 1];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
[[UIApplication sharedApplication] cancelAllLocalNotifications];

随时随地使用。在我这边,我在用户按下注销时使用过。 您可以在

中使用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

应用打开后清除通知的方法

AFAIK,您应该使用后台模式进行远程通知,然后通过发出本地通知来响应这些通知。 您可以删除本地通知,但不能删除远程通知。

终于...

这个很有魅力!

[[UNUserNotificationCenter currentNotificationCenter] removeAllDeliveredNotifications];

重置应用徽章编号也会从通知中心删除所有通知(本地和远程)。

Objective C

[UIApplication sharedApplication].applicationIconBadgeNumber = 0;

Swift

UIApplication.shared.applicationIconBadgeNumber = 0

这绝对可以通过使用 UserNotifications.framework 中提供的 removeDeliveredNotifications(withIdentifiers:) 方法来实现。

详细教程请看这里

https://medium.com/@sebastianosiski/implementing-removable-remote-notifications-on-ios-a17d74832bde