网页推送的 Firebase Cloud Messaging

测试

如果您想测试 WebPush 对发送标签页或 Web 应用的 WebPush 等功能的支持,则需要按照以下说明为您的调试应用程序启用此功能。

  1. Fenix 团队的 Google Drive 下载 XML 凭据文件。

  2. 将文件放置在 fenix/app/src/debug/res/values/ 目录中。

    • 这将编译到 fenixDebug 变体中。

  3. 运行应用程序并验证您是否在 adb logcat 中收到如下所示的日志消息。

    Received a new registration token from push service.
    Got new Firebase token.
    

组件和代码

要使推送正常工作,重要的组件是 feature-push(尤其要注意 README)和 lib-push-firebase

对于 GeckoView,请查看 WebPushEngineIntegration.kt,它将 feature-push 中的 AutoPushFeature 连接到 Engine

对于 Firefox 同步,它是 feature-accounts-push

Firefox 同步和发送标签页

如果您使用 Firefox 同步测试 WebPush 支持,您还应该期望在登录 Firefox 同步帐户后不久看到此日志。

Created a new subscription: [context data]

常见问题

问:为什么凭据存储在 Google Drive 中?

  • Firebase 服务需要一个凭据文件,通常名为 google-services.json,该文件是从 Firebase 控制台为该项目中的所有应用程序检索的。我们的要求有些独特,因此我们从 google-services.json 生成我们自己的 XML 文件并使用它。根据 Firebase 工程师 的说法,提交我们的 google-services.json 应该是安全的,但我们避免这样做,因为 Fenix 的其他分支不能使用这些凭据。例如,Google I/O 应用也会将其 发布版本 的文件提交到 Github。

问:哪些特殊要求意味着我们无法直接使用 google-services.json

  • 按照“入门”Firebase 指示在 Fenix 中初始化服务将不起作用,因为我们明确选择不使用 com.google.gms.google-services Gradle 插件,因为 Android 服务将使用 ContentProvider 积极地初始化,这会降低我们对应用程序如何以高性能方式启动的控制,因为浏览器的启动顺序非常独特。

问:我们从哪里获取 google-services.json 文件?

  • 询问您友好的发布管理团队成员,看看他们是否可以访问位于 console.firebase.google.com 的 Cloud Messaging 控制台。

问:如何从 google-services.json 生成 XML 文件?

  • 最简单的方法是使用 这个巧妙的网络应用程序 为您完成此操作。

  • 更官方也更繁琐的方法是手动执行此操作,方法是按照 google 服务插件网站上的说明 进行操作。

  • 请注意,google-services.json 文件可能包含多个应用程序的凭据,因此请确保您正在复制正确项目的说明。