我们如何远程解除推送通知?

Buf*_*ack 10 push-notification ios

我的应用程序每天向所有用户广播推送通知(PN),这些用户在4小时后变得无关紧要.有什么办法可以在每个用户的通知中心删除那个在4小时内没有点击它的通知吗?

我曾经认为这还不可能,但在看到Google的环聊应用行为后变得充满希望 - 它将PN发送到Mac和iOS ......如果我在Mac上阅读该消息,它会自动立即将其从iOS通知中心删除.

我对谷歌进行了广泛的研究,令人惊讶的是没有发现这一点 - 这里只有一个问题已被正式关闭!

rck*_*nes 11

诀窍是让你的应用程序支持后台获取并在你的应用程序在后台时处理推送通知.

然后在application:didReceiveRemoteNotification:fetchCompletionHandler:设置应用程序徽章中,0以便从通知中心删除所有推送通知.

发送特殊推送通知,其中没有向用户显示数据但包含重置推送通知状态的命令.

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

  if([[userInfo objectForKey:@"reset"] boolValue]){
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
  }

}
Run Code Online (Sandbox Code Playgroud)


Kha*_*Ali -5

只有在用户点击后才能消除通知。如果用户尚未点击它来打开它,则无法关闭或隐藏它。

如果您想关闭已打开的通知,可以尝试cancelLocalNotification:关闭当前正在显示警报的通知。根据苹果文档: 您可以通过在应用程序对象上调用cancelLocalNotification:来取消特定的预定通知,并且可以通过调用cancelAllLocalNotifications来取消所有预定的通知。这两种方法还可以通过编程方式消除当前显示的通知警报。

  • `cancelLocalNotification:` 和 `cancelAllLocalNotifications` 不适用于仅适用于本地通知的推送通知。 (4认同)