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

时间:2017-03-01 02:18:42

标签: android firebase firebase-cloud-messaging

我们在我们的Android应用程序中集成了firebase消息,用于推送通知。我们将从服务器端使用SNS向firebase发送推送消息。以下是我们的用例:

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

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

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

1 个答案:

答案 0 :(得分:9)

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

通常,Firebase apps init automatically(通过gradle插件注入的数据,肯定会在那里阅读我的博客文章)。该系统适用于绝大多数情况,但不适用于您的情况。

如果正常情况不起作用,您必须通过Android构建工具禁用FirebaseInitProvider(请参阅tools:node="remove"),并使用FirebaseApp.initializeApp()使用FirebaseOptions自行初始化您的应用你建造。您需要在调用任何API之前安排init,否则会出错。