Karp 的技术博客

官方文档地址 : https://firebase.google.com/docs/cloud-messaging/fcm-architecture?hl=zh-cn

2025-02-06T05:48:30.png

Firebase Cloud Messaging (FCM) 提供了众多消息传递选项和功能。本页中的内容旨在帮助您了解不同类型的 FCM 消息以及您可以将其用于哪些目的。

消息类型

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

  • 通知消息:有时被称为“显示消息”。此类消息由 FCM SDK 自动处理。
  • 数据消息:由客户端应用处理。

通知消息

通知消息包含一组用户可见的预定义键。与其相对,数据消息只包含用户定义的自定义键值对。通知消息可以包含可选的数据载荷。

数据消息

数据消息仅包含自定义键值对,没有保留键名。两种消息类型的载荷上限均为 4096 个字节,但从 Firebase 控制台发送消息时会强制执行 1000 个字符的限制。

使用场景与发送方式

通知消息

  • 发送方式:在可信环境(例如 Cloud Functions 或应用服务器)中,使用 Admin SDK 或 HTTP v1 API。设置 notification 键,可能包含可选的数据有效负载。
  • 应用行为

    • 当客户端应用在后台运行时,FCM SDK 会代表客户端应用向最终用户设备显示消息。
    • 如果应用在收到通知时正在前台运行,应用的代码会决定行为。

示例 JSON:

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

数据消息

  • 发送方式:在可信环境中,使用 Admin SDK 或 FCM 服务器协议。在发送请求中,设置 data 键。
  • 应用行为:客户端应用负责处理数据消息。

示例 JSON:

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

数据消息加密

Android 传输层使用点到点加密。FCM 不提供端到端解决方案,但可以使用外部解决方案,例如 Capillary 或 DTLS。

包含可选数据载荷的通知消息

无论是通过编程方式还是通过 Firebase 控制台发送通知消息,您都可以在消息中包含由自定义键值对组成的可选载荷。

  • 应用行为

    • 在后台运行时,应用会在通知面板中接收通知载荷,且仅在用户点按通知时处理数据载荷。
    • 在前台运行时,您的应用将会接收一个提供两种载荷的消息对象。

示例 JSON:

{
  "message": {
    "token": "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification": {
      "title": "Title Here",
      "body": "Body Here"
    },
    "data": {
      "customKey1": "customValue1",
      "customKey2": "customValue2"
    }
  }
}

推送服务

版权属于:karp
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2025年02月06日 05:50
0

目录

来自 《FCM 消息简介》