您可以使用 FCM 向客户端应用发送两种类型的消息:
- 通知消息(类似于“显示消息”)由 FCM SDK 自动处理。
- 数据消息,由客户端应用处理。
通知消息包含一组预定义的用户可见的键,并且可以包含可选的数据载荷。与此相对,数据消息只包含用户定义的自定义键值对。两种消息类型的载荷上限均为 4096 个字节,但从 Firebase 控制台发送消息时会强制执行 1000 个字符的限制。
使用情景 | 如何发送 | |
---|---|---|
通知消息 | 当客户端应用在后台运行时,FCM SDK 会代表客户端应用向最终用户设备显示消息。如果应用在收到通知时正在前台运行,应用的代码会决定行为。 |
|
数据消息 | 客户端应用负责处理数据消息。数据消息仅包含自定义键值对,没有保留键名(请参阅下文)。 | 在可信环境(例如
Cloud Functions 或应用服务器)中,使用 Firebase Admin SDK 或 HTTP v1 API。在发送请求中,设置 data 键。
|
当您的应用在后台运行时,如果您希望 FCM SDK 自动处理通知的显示,可以使用通知消息。FCM 可以发送包含可选数据载荷的通知消息。在这种情况下,FCM 会显示通知载荷,而客户端应用会处理数据载荷。
如果您希望使用自己的客户端应用代码处理消息,可以使用数据消息。
通知消息
您可以使用 Firebase 控制台、 Firebase Admin SDK 或 FCM HTTP v1 API 发送通知消息。Firebase 控制台提供基于分析的 A/B 测试,可帮助您优化和改进通知消息。
如需使用 Firebase Admin SDK 或 FCM HTTP v1 API 发送通知消息,请使用通知消息的预定义键值对选项集来设置 notification
键。您可以使用以下示例在即时通讯应用中设置通知消息的格式
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Portugal vs. Denmark",
"body":"great match!"
}
}
}
应用在后台运行时,通知消息将被传递至通知面板。应用在前台运行时,消息由回调函数处理。
如需可用于构建通知消息的预定义键的完整列表,请参阅 FCM HTTP v1 API 通知对象参考文档。
数据消息
您可以自行决定如何使用 FCM 载荷 data
来实现所选的加密方案。请确保未在自定义键值对中使用任何保留字词。保留字包括 from
、message_type
或以 google.
、gcm.
或 gcm.notification.
开头的任何字词。
以下示例演示了顶层或常用的 data 字段的用法,该字段由收到消息的所有平台上的客户端解读。在每个平台上,客户端应用都会在回调函数中收到数据载荷
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"data":{
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
}
}
}