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

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

虽然 browser.gcm 仍受支持,但它是在 Push 标准推出之前(十多年前)创建的。一般来说,最佳实践是始终使用 Web 标准,而不是特定的扩展 API。除非您有使用 browser.gcm 的特定需求,否则我们建议您使用 Push

前提条件

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

Firebase.com 首页。
Firebase.com 首页

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

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

继续前往 Cloud Messaging 的设置页面

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

如果此项目中有现有的云消息传递账号,您需要复制列出的数字发件人 ID。

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

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

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

配置 browser.gcm

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

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

您现在有权使用 browser.gcm API。您可以调用 browser.gcm.register 注册以监听推送消息

监听消息

扩展程序注册您的发件人 ID 后,您需要添加代码来处理传入的消息。

不含 Firebase 的 Firebase

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

关于频道和主题

browser.gcm 正在使用旧版 Firebase Messaging API。这一点非常重要,因为旧版 API 不支持消息通道。推送的每条消息都会发送给所有客户端。如果用户的扩展程序仅对部分消息感兴趣,您需要自行过滤。

虽然 Firebase 最初是免费账号,但一旦超出特定用量阈值,您就需要付费。如果您打算向特定群组发送消息,那么客户端过滤的成本可能最终会超出预期。您可以创建多个项目来复制各个渠道(每个渠道对应一个项目和一个发件人 ID),从而解决此问题。任何给定的扩展程序都可以注册多个发送者 ID,最多可注册 100 个。

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