androidfirebasefirebase-cloud-messaging

Switching between different firebase projects (runtime) in one single APK file


We are integrating firebase messaging in our android application for push notifications. We are going to use SNS from server side to send push message to firebase. Below is our use case:

This is first time that we are venturing in world of push notifications on android.

PS: The obvious solution is to just have one project in firebase and configure it on client and all of our servers can use the same project but ideally we want separate project for Production vs QA/STG


Solution

  • If you really need a single APK that somehow self-selects which Firebase project it works against, you can't use the automatic init provided by the Gradle plugin.

    Normally, Firebase apps init automatically (definitely read my blog post there) via data injected by the gradle plugin. This system works in a vast majority of cases, but not in yours.

    If the normal case doesn't work for you, you'll have to disable the FirebaseInitProvider via Android build tools (see tools:node="remove"), and initialize your app yourself with FirebaseApp.initializeApp() with a FirebaseOptions that you construct. You need to arrange for the init to happen before any APIs are called, or you'll get errors.