在一个 APK 文件中的不同 Firebase 项目(运行时)之间切换

问题描述 投票:0回答:1

我们正在将 Firebase 消息传递集成到 Android 应用程序中以用于推送通知。我们将使用服务器端的 SNS 向 Firebase 发送推送消息。以下是我们的用例:

  • 我们有三台服务器:QA、STG 和 PRODUCTION
  • 我们在 firebase 控制台中创建了三个项目:appQA、appSTG 和 appProd
  • 但是我们只想生成 1 个单个 APK,它可以根据用户登录的服务器从上述三个 Fire Base 项目中的任何一个接收 Firebase 推送通知。
  • 我们在 firebase 中配置了每个项目,最后每个项目获得 1 个 google-services.json 文件(总共 3 个)
  • 现在我们如何配置或生成 1 个 APK,它可以包含所有三个 json 文件并在它们之间切换 runtime 而不是 build-time,因为我们不想为单独的环境构建单独的 APK。我们严格要求生成一个可用于连接到我们所有环境并接收来自所有环境的推送通知的单个 APK。
  • 我们尝试了风格和构建类型,但都是 构建时 而不是 运行时

这是我们第一次涉足 Android 上的推送通知世界。

PS:显而易见的解决方案是在 firebase 中只有一个项目并在客户端上配置它,我们所有的服务器都可以使用同一个项目,但理想情况下我们希望生产与 QA/STG 分别使用单独的项目

android firebase firebase-cloud-messaging
1个回答
16
投票

如果您真的需要一个能够以某种方式自行选择它所针对的 Firebase 项目的 APK,则无法使用 Gradle 插件提供的自动初始化功能。

通常情况下,Firebase 应用程序会通过 gradle 插件注入的数据自动初始化(一定要阅读我的博客文章)。 该系统适用于绝大多数情况,但不适用于您的情况。

如果正常情况不适合您,您必须通过 Android 构建工具禁用 FirebaseInitProvider(请参阅

tools:node="remove"),并使用 FirebaseApp.initializeApp() 自行初始化您的应用程序使用您构建的 FirebaseOptions。 您需要安排在调用任何 API 之前进行 init,否则您会收到错误。

© www.soinside.com 2019 - 2024. All rights reserved.