Firebase 合并 Android 中的类似通知

Gri*_*ram 1 notifications android firebase firebase-cloud-messaging

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

虽然发送和接收工作正常,但我们对 Android 客户端有影响,即 5 个未接来电 obv 会生成 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"
    }
}
Run Code Online (Sandbox Code Playgroud)

那么将它们结合在一起有什么技巧呢?

Gri*_*ram 7

我们找到了正确的解决方案。通知内容现有的关键字较多。我们需要的是"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"
}
}
Run Code Online (Sandbox Code Playgroud)

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