Files
firebase-ios-sdk/docs/FirebaseOptionsPerProduct.md
T
Nick Cookeandgoogle-labs-jules[bot] 7ac5bcb35f [Core] Remove Options.androidClientID and Options.trackingID (#15013)
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-06-20 14:59:17 -04:00

70 lines
3.8 KiB
Markdown

# Firebase Options Usage By Product
Summarize which Firebase Options fields (and GoogleService-Info.plist attributes) are used by which Firebase products.
| | An | ApC | ApD | Aut | Cor | Crs | DB | DL | Fst | Fn | IAM | Ins | Msg | MLM | Prf | RC | Str |
| :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| **apiKey** | | ✅ | ✅ | ✅ | | | | ✅ | | | ✅ | ✅ | | | ✅ | ✅ | |
| **bundleID** | | | | | ✅ | | | | | | | | | | ✅ | | |
| **clientID** | | | | ✅ | | | | | | | | | | | | | |
| **gcmSenderID** | | | | | | | | | | | ✅ | ✅ | ✅ | | | ✅ | |
| **projectID** | | ✅ | | | | | ✅ | | ✅ | ✅ | | ✅ | | ✅ | ✅ | ✅ | |
| **googleAppID** | ✅ | ✅ | | ✅ | | ✅ | ✅ | | | | ✅ | ✅ | ✅ | | ✅ | ✅ | ✅ |
| **databaseURL** | | | | | | | ✅ | | | | | | | | | | |
| **storageBucket** | | | | | | | | | | | | | | | | | ✅ |
## Rows (FirebaseOptions)
See [FIROptions.m](https://github.com/firebase/firebase-ios-sdk/blob/main/FirebaseCore/Sources/FIROptions.m) to see how the variables map
to GoogleService-Info.plist attributes.
* *apiKey*: An API key used for authenticating requests from your Apple app
* *bundleID*: The bundle ID for the application (Not used by the SDK)
* *clientID*: The OAuth2 client ID for Apple applications used to authenticate Google users
* *gcmSenderID*: The Project Number from the Google Developer's console used to configure Google Cloud Messaging
* *projectID*: The Project ID from the Firebase console
* *googleAppID*: The Google App ID that is used to uniquely identify an instance of an app
* *databaseURL*: The realtime database root URL
* *storageBucket*: The Google Cloud Storage bucket name
## Questions
* *apiKey*, *projectID*, *gcmSenderID*, *projectID*, and *googleAppID* seem to have overlapping
functionality. Can they be consolidated?
* *gcmSenderID* is the second subfield of *googleAppID*. Can it be eliminated?
* *bundleID* seems to have three purposes: Performance SDK uses it. Messaging back end uses it. Core
will generate an error message if it doesn't match the actual bundleID. Anything else?
* Is there a better way to manage the fields that are only used by one product? *clientID*, *databaseURL*,
and *storageBucket*.
## Unread GoogleService-Info.plist fields
Proposal: Stop generating these for GoogleService-Info.plist.
* PLIST_VERSION
* Note: This is different from the `<plist version="1.0">` declaration that is part of the
[Property List XML Schema](https://www.apple.com/DTDs/PropertyList-1.0.dtd).
* IS_ADS_ENABLED
* IS_ANALYTICS_ENABLED
* IS_APPINVITE_ENABLED
* IS_GCM_ENABLED
* IS_SIGNIN_ENABLED
## Columns (Firebase Products)
* An - Analytics
* ApC - App Check
* ApD - App Distribution
* Aut - Auth
* Cor - Core
* Crs - Crashlytics
* DB - Real-time Database
* DL - Dynamic Links
* Fst - Firestore
* Fn - Functions
* IAM - In App Messaging
* Ins - Installations
* Msg - Messaging
* MLM - MLModel Downloader
* Prf - Performance
* RC - Remote Config
* Str - Storage