【问题标题】:Programmatically delete Remote Notifications from Notification Centre以编程方式从通知中心删除远程通知
【发布时间】:2017-10-11 15:38:40
【问题描述】:

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

我已尝试使用 [[UIApplication sharedApplication] cancelAllLocalNotifications]; API,但没有帮助。

PS:这个问题是针对 iOS 10 的,旧线程不会重复。

【问题讨论】:

标签: ios objective-c cocoa-touch apple-push-notifications ios10


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 我已经尝试过了,但它没有帮助。我在这里谈论远程通知。也许我应该编辑我的问题。
  • 行 [UIApplication sharedApplication].applicationIconBadgeNumber=0;也会清除推送通知
  • 那不是真的!
【解决方案2】:

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

【讨论】:

  • 感谢您的回复。您能否指点我确认无法从通知中心删除远程通知的文档?我在网上找到了多个版本。
  • 目前还找不到官方文档,但你可以先看看这里:stackoverflow.com/questions/24231120/…
  • 有可能。看看我的回答。
【解决方案3】:

终于……

这一款很有魅力!

[[UNUserNotificationCenter currentNotificationCenter] removeAllDeliveredNotifications];

【讨论】:

    【解决方案4】:

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

    目标 C

    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
    

    斯威夫特

    UIApplication.shared.applicationIconBadgeNumber = 0
    

    【讨论】:

    • 有没有办法在不删除所有通知的情况下重置徽章计数?
    【解决方案5】:

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

    详细教程请按此

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

    【讨论】:

      猜你喜欢
      • 2018-08-07
      • 1970-01-01
      • 2013-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多