Setup Firebase on iOS/Android with multiple environments
It’s pretty straightforward to install Firebase when you have only one environment.
But what if you have multiple environments, such as dev
, staging
and production
?
Here’s a step-by-step guide.
Android
On Android, Firebase groups the different configurations in one file.
- Go to the Firebase console
- Select your project
- Click “Add an application”, choose Android
- Fill in the form (giving a name like
Staging
), click save, and close the window - Repeat steps 3 to 4 for all your environments
- Download the
google-services.json
file- Select one of the Android applications
- Click on “google-services.json”
- Put
google-services.json
in yourapp
folder (android/app
in React-Native) - You might want to add
google-services.json
in your.gitignore
iOS
On iOS, there is one Firebase configuration file per environment.
- Go to the Firebase console
- Select your project
- Click “Add an application”, choose iOS
- Fill in the form (giving a name like
Staging
), click save - Download the configuration file
GoogleService-Info.plist
and rename it likeGoogleService-Info.{APP_IDENTIFIER}.plist
- Example: for
tech.bam.myApp.staging
,GoogleService-Info.tech.bam.myApp.staging.plist
- Example: for
- Repeat steps 3 to 5 for all your environments
- Put your configuration files in the root of your iOS app folder (
ios
in React-Native) - Make sure that your app identifier is injected in your
.pbxproj
. For example, if you’re using Fastlane, add aupdate_app_identifier
step like:update_app_identifier( xcodeproj: xcodeproj_full_path, plist_path: plist_full_path, app_identifier: ENV['APP_IDENTIFIER'] )
- In XCode, in
Build phases
, add aSelect GoogleService-Info.plist
build step before theCopy Bundle Resources
step that contains:cp "GoogleService-Info."$PRODUCT_BUNDLE_IDENTIFIER".plist" "GoogleService-Info.plist"
- In XCode, in
Build phases
, add aClean GoogleService-Info.plist
build step after theCopy Bundle Resources
step that contains:rm "GoogleService-Info.plist"
- Make sure that the
GoogleService-Info.plist
is listed in the resources of theCopy Bundle Resources
step - You might want to add
GoogleService-Info.*.plist
in your.gitignore