Firebase在Android中合并类似的通知

时间:2017-01-12 11:05:17

标签: android firebase notifications firebase-cloud-messaging

我们正在SIP应用中使用Firebase,以便在应用离线时向我们发送未接来电通知和聊天通知。

虽然发送和接收工作正常,但我们对Android客户端产生影响,5个未接来电显示5个未接来电通知,填写客户端设备上的通知栏。

我们如何将这些通知合并在一起,只显示一个" 5个未接来电"通知?

我们可以在邮件的datanotification部分添加任何其他标记(例如分组)吗?

以下是我们当前未接来电通知的示例:

{
    "to":"<<FCMToken>>",
    "priority":"high",
    "notification":{
        "title":"<<Displayname-of-Caller>>",
        "text":"<<Date-and-time-of-call>>", 
        "icon":"icon_notification_missed",
        "click_action":"MISSED_CALL"
    },
    "data":{
        "type":"sip-call-missed"
    }
}

那么将它们组合在一起的技巧是什么?

1 个答案:

答案 0 :(得分:3)

我们找到了正确的解决方案。 通知内容有更多现有关键字。 我们需要的是"tag"。 我们甚至可以通过在loc个密钥中提供资源名称来本地化通知的客户端文本。

以下是可以捆绑在一起的正确消息:

{
"to":"<<FCMToken>>",
"priority":"high",
"notification":{
    "title_loc_key":"notification_missed_call",
    "tag":"MISSED_CALL",
    "body_loc_key":"notification_missed_call_multiple",
    "body_loc_args":["<<missed_call_count>>"],
    "icon":"icon_nav_main_chat",
    "click_action":"MISSED_CALL"
},
"data":{
    "type":"sip-call-missed"
}
}

tag将由客户合并...说:他们将互相替换。每当带有标记的通知到达时,它都会用相同的标记替换所有其他现有通知。 所以这里的技巧是提供一个运行计数<<missed_call_count>>(服务器必须计算),这样客户端就可以显示越来越多的数字,比如“5次未接来电”。 字符串"%d missed calls"存储在名为"notification_missed_call_multiple"的客户端字符串资源中。