如何从 Firebase 推送通知中获取字幕

Posted

技术标签:

【中文标题】如何从 Firebase 推送通知中获取字幕【英文标题】:How to get subtitle from firebase push notification 【发布时间】:2019-03-04 10:46:33 【问题描述】:

我从服务器收到这种格式的推送通知。


                title: messageTitle,
                body: messageBody,
               subtitle: messageSubtitle

在我的 android 项目中,我使用以下代码读取通知。

remoteMessage.getNotification().getTitle();
remoteMessage.getNotification().getBody(); 

以上两行给了我TitleBody,但我无法理解如何阅读subtitle 属性。

【问题讨论】:

【参考方案1】:

标准通知格式不包含subtitle,因此无法获取它,要获取字幕消息,请使用data键。

标准通知格式


  "message":
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    
  

如果您想要字幕,请在数据字段中添加字幕,然后使用 getData() 方法获取

自定义字幕通知


  "message":
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    ,
    "data" : 
      "subtitle" : "Mario",
      "subHeading" : "PortugalVSDenmark"
    
  

【讨论】:

【参考方案2】:

//remoteMessage是RemoteMessage的引用

 `val data = remoteMessage.data

    if(data.isNotEmpty())
    

        if (data.containsKey("title"))
            title = data["title"].toString()

        if (data.containsKey("body"))
            body = data["path"].toString()

        if(data.containsKey("subtitle"))
            subtitle = data["subtitle"].toString()

        if(data.containsKey("notifyId"))
            notifyId = data["notifyId"]?.toInt()

        `

【讨论】:

【参考方案3】:

要接收带有自定义数据的 FCM 通知,我们需要检查数据负载,如下所示:-

在后台时,应用程序会在 通知托盘,并且仅在用户处理数据负载时 点击通知。

在前台时,您的应用会收到一个 两个有效负载都可用的消息对象。

如果是情况2,您可以简单地检查如下:-

String customData = remoteMessage.getData().get("customData");

第一种情况请参考答案;-

handle notification with custom data

希望这会有所帮助。

【讨论】:

以上是关于如何从 Firebase 推送通知中获取字幕的主要内容,如果未能解决你的问题,请参考以下文章

推送内容更改通知

安装 firebase 后生成推送通知

SwiftUI 和 Firebase:从推送通知中获取信息

Firebase 函数从 Firebase DB 获取数据以进行推送通知

如何从 C# 发送 FireBase 自定义推送通知?

如何在日志中获取推送通知收到消息