网页推送的 Firebase Cloud Messaging¶
测试¶
如果您想测试 WebPush 对发送标签页或 Web 应用的 WebPush 等功能的支持,则需要按照以下说明为您的调试应用程序启用此功能。
从 Fenix 团队的 Google Drive 下载 XML 凭据文件。
将文件放置在
fenix/app/src/debug/res/values/
目录中。这将编译到
fenixDebug
变体中。
运行应用程序并验证您是否在
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
文件可能包含多个应用程序的凭据,因此请确保您正在复制正确项目的说明。