将 Firebase Cloud Messaging (FCM) 与 chrome.gcm 搭配使用

您可以使用 chrome.gcm 向最终用户发送和接收消息。由于它基于 Firebase Cloud Messaging (FCM) 构建,因此需要您设置外部服务。本教程将引导您完成在扩展程序中使用该功能所需的所有必要步骤。

虽然 chrome.gcm 受支持,但它是在推送标准推出之前的十多年前创建的。一般而言,最佳实践始终是使用 Web 标准,而不是扩展程序专用 API。除非您有特定需要使用 chrome.gcm,否则我们建议您使用推送

前提条件

如需使用 chrome.gcm,您需要设置 Firebase 账号。

Firebase.com 首页。
Firebase.com 首页

创建账号后,您需要打开 Firebase 控制台,选择要使用的现有项目,或为扩展程序创建一个新项目。

Firebase 控制台中项目列表的屏幕截图。
Firebase 控制台中的项目列表

继续前往 Cloud Messaging 的设置页面

Firebase Cloud Messaging 设置页面的屏幕截图。
Firebase Cloud Messaging 设置页面

如果您在此项目中已有 Cloud Messaging 账号,则需要复制所列的数字发件人 ID。

如果您尚未启用 Cloud Messaging,则需要在 Google Cloud 中为项目启用 Firebase Cloud Messaging API。在下图中,您可以看到 Firebase 设置中直接指向此页面的链接所在的位置。

在 Google Cloud 中启用 Firebase Messaging API 的链接位置的屏幕截图。
在 Firebase 中打开 Google Cloud 设置链接

启用后,返回 Cloud Messaging 的设置页面,然后复制发件人 ID。

配置 chrome.gcm

现在,您已经从 Firebase 获取了发件人 ID,接下来可以配置扩展程序以监听消息。首先,请确保您已向扩展程序的 manifest.json 添加了 gcm 权限

  {
    "manifest_version": 3,
    ...
    "permissions": ["gcm"]

您现在可以访问 chrome.gcm API。您可以通过调用 chrome.gcm.register 进行注册以监听推送消息。

监听消息

扩展程序注册了发送者 ID 后,您需要添加代码来处理收到的消息。

无 Firebase 的 Firebase

虽然 chrome.gcm 始终会通过 Firebase,但 Firebase 可以配置为充当外部推送消息供应商的代理。通常,供应商会明确列出对 Chrome 扩展程序的支持,但任何支持 Firebase 旧版推送通知的供应商都应该可以使用。如果您的提供商列出了对 Firebase 旧版推送通知的支持,请尝试使用。如果您遇到问题,提供商支持团队应该能够说明存在的任何限制。

针对频道和主题

chrome.gcm 使用的是旧版 Firebase Messaging API。这一点很重要,因为旧版 API 不支持消息通道。推送的每条消息都会发送给每个客户端。如果用户的扩展程序只对部分邮件感兴趣,您需要自行过滤。

虽然 Firebase 账号一开始是免费的,但当您超出一定的使用量阈值后,我们会向您收费。如果您计划向特定群组发送消息,则客户端过滤功能最终的费用可能会超出承诺的费用。您可以通过创建多个项目来复制各个渠道(每个渠道一个项目和一个发件人 ID),从而解决此问题。任何给定扩展程序都可以注册多个发件人 ID(最多 100 个)。

或者,如果您需要渠道支持,或者想在不通过 Firebase 的情况下使用推送通知,可以使用 Push API