更新交付的通知IO 10
我正在尝试更新iOS 10上已经发送的通知,这是一项新function。 我正在使用API调用通过Firebase发送推送通知。
如果在线通知应该是“a在线”如果b也上线通知的消息应该更新为“a和b在线”如果c也在线通知的消息应该更新为“a,b和c在线”等等..
我已经使用了这个问题的答案当iOS 10中的UNUserNotificationCenterDelegate新通知到达时,如何删除以前发送的通知? 。 每当我的后端发送一个通知,我在willPresentNotification中写了一个逻辑来获得所需的确切消息,并更新现有的通知消息。
但它只能在应用程序处于前景或背景时才起作用。 如果app被终止,那么前端没有任何东西可以被执行来更新通知消息。 所以每次后台发送一个通知
我得到“一个在线”,“B在线”和“C在线”所有单独的通知。
那么,如何从后端获得所需的行为? 我是否必须将推送的通知的标识符保存在数据库中,并使用它们远程更新消息? iOS甚至允许后端服务器从远程设备的通知中心获取通知详细信息? 如果我们使用来自后端的标识符,它会相应地更新消息?
谢谢
每次创build更新的通知…只需使用相同的 identifier
。有关WWDCvideo的更多信息,请参阅此刻 。
上面的答案是为本地通知,但您正在寻找远程通知…
仍然看到相同的时刻来得到的想法…唯一的区别是,对于本地通知你有identifier
…对于远程通知你有apns-collapse-id
头:
所以只需给apns-collapse-id
一个值,每次发送一个新的都会更新前一个。 很明显,如果用户在应用程序中,那么你的运气不好,因为他们已经收到通知。 这只会在用户尚未打开通知(也不在应用程序中)时才起作用。 如果他们已经打开它,则发送新的通知。
apns-collapse-id
具有相同
collapse identifier
多个通知作为单个通知显示给用户。 该密钥的值不能超过64个字节。 有关更多信息,请参阅服务质量,存储转发和合并通知 。
从Apple文档:
要允许类似通知的合并*,您可以在通知请求中包含合并标识符。 通常情况下,当设备处于联机状态时,您发送给APN的每个通知请求都会导致向设备发送通知。 但是,当您的HTTP / 2请求标头中存在apns-collapse-id密钥时,APN会合并该密钥的值相同的请求。 例如,发送相同标题两次的新闻服务可以为这两个请求使用相同的折叠标识符值。 然后,APN会将这两个请求合并为一个单一的通知传递给设备。 有关
apns-collapse-id
密钥的详细信息。
*:聚在一起,形成一个整体