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

时间:2014-05-06 08:01:59

标签: ios push-notification

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

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

我在google上进行了广泛的研究,令人惊讶的是没有发现任何问题 - 只有一个问题here已被正式关闭!

2 个答案:

答案 0 :(得分: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];
  }

}

答案 1 :(得分:-4)

只有在用户点击后才能解除通知。如果用户没有点击它来打开它,你就无法忽略它。

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