Android上的FCM通知是否可以覆盖前一个?

时间:2016-09-30 01:41:03

标签: android firebase android-notifications firebase-cloud-messaging firebase-notifications

我正在使用FCM向Android设备发送通知。当应用程序处于后台时,如果我发送10个通知,则设备将在通知栏上显示10个条目。

我希望FCM在通知栏上只输入一个条目,即较新的条目将覆盖旧条目。我找不到在https://firebase.google.com/docs/cloud-messaging/http-server-ref#downstream设置此密钥的密钥。

有办法吗,或者不可能?感谢。

2 个答案:

答案 0 :(得分:4)

要实现这一目标, 在通知有效内容中,使用标记键

{
    "notification" : {
        "title" : "Notification Title",
        "body" : "Notification Body",
        "tag" : "your_unique_tag"
    }
}

干杯。

答案 1 :(得分:3)

这是可能的。两种方法。

首先,您使用collapse_key参数将消息设置为可折叠消息。参考FCM docs

  

可折叠邮件是一条消息,如果尚未传递给设备,则该消息可能会被包含相同折叠密钥的新邮件替换。

它实际上包含在您提供的link中(选项下的第一个参数):

  

collapse_key - 此参数标识可以折叠的一组消息(例如,使用collapse_key:"可用更新"),以便在传递时仅发送最后一条消息可以恢复。这是为了避免在设备重新联机或变为活动状态时发送过多相同的消息。

     

请注意,无法保证邮件的发送顺序。

     

注意:在任何给定时间最多允许4个不同的折叠键。这意味着FCM连接服务器可以同时为每个客户端应用程序存储4个不同的发送到同步消息。如果超过此数字,则无法保证FCM连接服务器将保留哪4个折叠键。

第二种方法是通知捆绑/堆叠/分组。根据我的回答here

  

通过分组通知,我假设您的意思是堆叠bundling notifications

     

这更多地是关于如何在客户端应用中处理通知。您只需使用setGroup()将所有通知添加到单个组,然后调用notify()让NotificationManager进行更改。

     

这个Add Each Notification to a Group文档几乎总结了这一切。

更新

从其中一个linked posts,使用tag参数也是一个选项:

  

用于替换通知抽屉中现有通知的标识符。

     

如果未指定,则每个请求都会创建一个新通知。

     

如果已指定且已显示具有相同标记的通知,则新通知将替换通知抽屉中的现有通知。