我的应用程序每天向所有用户广播推送通知(PN),这些用户在4小时后变得无关紧要。我有什么方法可以在每个用户的通知中心删除该通知,而该通知中心在4小时内没有使用该通知吗?
我曾经认为这还不可能,但在看到谷歌的环聊应用行为后变得充满希望 - 它将PN发送到Mac& iOS ...如果我在Mac上阅读该消息,它会立即自动将其从iOS'通知中心。
我在google上进行了广泛的研究,令人惊讶的是没有发现任何问题 - 只有一个问题here已被正式关闭!
答案 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取消所有预定的通知。这两种方法还以编程方式关闭当前显示的通知警报。