更新已发送的通知 ios 10

RAM*_*RAM 5 objective-c push-notification apple-push-notifications ios ios10

我正在尝试更新 iOS 10 上已发送的通知,这是一项新功能。我正在使用 api 调用通过 firebase 发送推送通知。

如果a上线通知应为“a在线” 如果b也上线通知消息应更新为“a和b在线” 如果c也上线通知消息应更新为“a、b和c在线”等等..

我已经使用了这个问题的答案当新通知到达 iOS 10 中的 UNUserNotificationCenterDelegate 时,如何删除以前发送的通知?。每当我的后端发送通知时,我都会在 willPresentNotification 中编写一个逻辑来获取所需的确切消息并更新现有的通知消息。

但它仅在应用程序处于前台或后台时才有效。如果应用程序终止,则前端中没有任何内容可以执行来更新通知消息。所以每次后端发送通知时

我收到“a 在线”、“b 在线”和“c 在线”所有单独的通知。

那么,如何从后端获得所需的行为?我是否必须将推送的通知的标识符保存在数据库中并使用它们远程更新消息?iOS 是否允许后端服务器从远程设备的通知中心获取通知详细信息?如果我们使用后端的标识符,它会相应地更新消息吗?

谢谢

Hon*_*ney 3

每次您创建更新的通知时...只需使用相同的 identifier. 欲了解更多信息,请观看WWDC视频。

上面的答案适用于本地通知,但您正在寻找远程通知......

仍然看到相同的时刻来获得想法...唯一的区别是,对于本地通知,您有identifier...对于远程通知,您有apns-collapse-id标题:

在此输入图像描述

因此,只需给 一个值apns-collapse-id,每次发送新值时,它都会更新前一个值。显然,如果用户在应用程序中,那么你就不走运了,因为他们已经收到了通知。仅当用户尚未打开通知(也不在应用程序中)时,这才有效。如果他们打开了它,则会发送新的通知。

apns-collapse-id

具有相同内容的多个通知collapse identifier将作为单个通知显示给用户。该键的值不得超过 64 字节。有关详细信息,请参阅服务质量、存储转发和合并通知

来自苹果文档:

要允许合并*相似的通知,您可以在通知请求中包含折叠标识符。通常,当设备在线时,您发送到 APN 的每个通知请求都会导致将通知传送到设备。但是,当 HTTP/2 请求标头中存在 apns-collapse-id 密钥时,APN 会合并该密钥值相同的请求。例如,两次发送相同标题的新闻服务可以对两个请求使用相同的折叠标识符值。然后,APN 会将两个请求合并为一个通知,以便传送到设备。有关apns-collapse-id密钥的详细信息。


*:聚集在一起形成一个整体