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

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

{
                title: messageTitle,
                body: messageBody,
               subtitle: messageSubtitle
}

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

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

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

【问题讨论】:

    标签: android firebase android-intent push-notification firebase-cloud-messaging


    【解决方案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

        希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-29
          相关资源
          最近更新 更多