Firebase Cloud Messaging 消息类型

您可以使用 FCM 向客户端应用发送两种类型的消息:

  • 通知消息(类似于“显示消息”)由 FCM SDK 自动处理。
  • 数据消息,由客户端应用处理。

通知消息包含一组预定义的用户可见的键,并且可以包含可选的数据载荷。与此相对,数据消息只包含用户定义的自定义键值对。两种消息类型的载荷上限均为 4096 个字节,但从 Firebase 控制台发送消息时会强制执行 1000 个字符的限制。

使用情景 如何发送
通知消息 当客户端应用在后台运行时,FCM SDK 会代表客户端应用向最终用户设备显示消息。如果应用在收到通知时正在前台运行,应用的代码会决定行为。
  1. 在可信环境(例如 Cloud Functions 或应用服务器)中,使用 Firebase Admin SDKHTTP v1 API。设置 notification 键。 可能包含可选的数据有效负载。始终可折叠

    请参阅一些 显示通知示例并发送请求载荷。

  2. 使用 Notifications Composer:输入消息文本、标题等,然后发送。通过提供自定义数据添加可选的数据载荷。
数据消息 客户端应用负责处理数据消息。数据消息仅包含自定义键值对,没有保留键名(请参阅下文)。 在可信环境(例如 Cloud Functions 或应用服务器)中,使用 Firebase Admin SDKHTTP v1 API。在发送请求中,设置 data 键。

当您的应用在后台运行时,如果您希望 FCM SDK 自动处理通知的显示,可以使用通知消息。FCM 可以发送包含可选数据载荷的通知消息。在这种情况下,FCM 会显示通知载荷,而客户端应用会处理数据载荷。

如果您希望使用自己的客户端应用代码处理消息,可以使用数据消息。

通知消息

您可以使用 Firebase 控制台 Firebase Admin SDKFCM HTTP v1 API 发送通知消息。Firebase 控制台提供基于分析的 A/B 测试,可帮助您优化和改进通知消息。

如需使用 Firebase Admin SDKFCM HTTP v1 API 发送通知消息,请使用通知消息的预定义键值对选项集来设置 notification 键。您可以使用以下示例在即时通讯应用中设置通知消息的格式

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

应用在后台运行时,通知消息将被传递至通知面板。应用在前台运行时,消息由回调函数处理。

如需可用于构建通知消息的预定义键的完整列表,请参阅 FCM HTTP v1 API 通知对象参考文档。

数据消息

您可以自行决定如何使用 FCM 载荷 data 来实现所选的加密方案。请确保未在自定义键值对中使用任何保留字词。保留字包括 frommessage_type 或以 google.gcm.gcm.notification. 开头的任何字词。

以下示例演示了顶层或常用的 data 字段的用法,该字段由收到消息的所有平台上的客户端解读。在每个平台上,客户端应用都会在回调函数中收到数据载荷

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    }
  }
}