如何从 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();
以上两行给了我Title
和Body
,但我无法理解如何阅读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 推送通知中获取字幕的主要内容,如果未能解决你的问题,请参考以下文章