Firebase C++ SDK Release Notes

To review release notes for the Firebase console and for other Firebase platforms and related SDKs, refer to the Firebase Release Notes.

To install this SDK, see Add Firebase to your C++ Project.

Version 12.3.0 - September 26, 2024

  • (iOS) Update to Firebase Cocoapods version 11.2.0.
  • (Android) Update to Firebase Android BoM version 33.3.0.
  • (Android) Updated minSdkVersion to 24.

FCM

  • Changed SetListener to send the last token received before the listener was set.

Remote Config

  • Fixed ConfigInfo fields to default to 0 when not throttled or having previous fetch data.

Version 12.2.0 - August 06, 2024

  • (iOS) Update to Firebase Cocoapods version 11.0.0.

Version 12.1.0 - June 26, 2024

  • (Android) Update to Firebase Android BoM version 33.1.1.
  • (iOS) Update to Firebase Cocoapods version 10.28.1.

Analytics

  • (iOS) Add support for InitiateOnDeviceConversionMeasurementWithHashedEmailAddress and InitiateOnDeviceConversionMeasurementWithHashedPhoneNumber.

Google Mobile Ads

  • The GMA C++ SDK is now deprecated. For more information, see the SDK documentation.

FCM

  • (Android) Fixed a potential race condition on receiving messages after cleanup.
  • (iOS) Fixed an issue with notifications being lost if they were received before Firebase Messaging was initialized.

Version 12.0.0 - May 07, 2024

  • (Android) Update to Firebase Android BoM version 33.0.0.
  • (Android) Updated minSdkVersion to 23, and targetSdkVersion and compileSdkVersion to 34.
  • (iOS) Update to Firebase Cocoapods version 10.25.0.
  • (iOS) Minimum iOS deployment target is now 13.0.

Authentication

  • Removed methods that were deprecated in v11.0.0.

Cloud Storage

  • (iOS) Fix invalid pointer in StorageReference::GetFile() when running in a secondary thread (#1570).

Version 11.10.0 - April 17, 2024

  • (Android) Update to Firebase Android BoM version 32.8.1.
  • (iOS) Update to Firebase Cocoapods version 10.24.0.
  • (iOS, tvOS, Desktop) iOS, tvOS, and macOS SDKs are now built using Xcode 15.1.

Google Mobile Ads

  • (iOS) Updated dependency to Google-Mobile-Ads-SDK version 11.2.0 and GoogleUserMessagingPlatform version 2.3.0.
  • (Android) Updated dependency to play-services-ads version 23.0.0 and user-messaging-platform version 2.2.0.

Cloud Storage

  • (Desktop) Removed 5-minute timeout for uploads and downloads.

Version 11.9.0 - March 13, 2024

  • (Android) Update to Firebase Android BoM version 32.7.4.
  • (iOS) Update to Firebase Cocoapods version 10.22.0.

Authentication

  • Add User::SendEmailVerificationBeforeUpdatingEmail, a new method to verify and change the User's email.
  • Deprecate the older method of updating emails, User::UpdateEmail.

Version 11.8.0 - January 23, 2024

  • (Android) Update to Firebase Android BoM version 32.7.1.
  • (iOS) Update to Firebase Cocoapods version 10.20.0.

FCM

  • (Android) Fixed minSdkVersion in the firebase_messaging.aar manifest file.

Version 11.7.0 - January 04, 2024

  • (Android) Firebase C++ on Android is now built using Android API level 33 and Gradle 6.7.1.
  • (Android) Update to Firebase Android BoM version 32.7.0.
  • (iOS) Update to Firebase Cocoapods version 10.19.0.

Analytics

  • Updated the consent management API to include new consent signals.

Authentication

Google Mobile Ads

  • (Android) Updated dependency to play-services-ads version 22.6.0.
  • (iOS) Updated dependency to Google-Mobile-Ads-SDK version 10.14.0.

Version 11.6.0 - October 17, 2023

  • (iOS) Update to Firebase Cocoapods version 10.16.0.

Cloud Firestore

  • Add support for disjunctions in queries (OR queries) (#1453).

Google Mobile Ads

  • Added the User Messaging Platform (UMP) SDK, required for obtaining consent from users before showing ads. See the Get Started Guide for more information.
  • (iOS) Added a new Cocoapod dependency for the UMP SDK: GoogleUserMessagingPlatform version 2.1.0.
  • (Android) Added a new Maven package dependency for the UMP SDK: com.google.android.ump:user-messaging-platform version 2.1.0. This dependency will automatically be included if you include "gma" in the firebaseCpp.dependencies list in your build.gradle file.

Version 11.5.0 - September 19, 2023

  • (iOS) Update to Firebase Cocoapods version 10.15.0.
  • (Android) Update to Firebase Android BoM version 32.3.1.
  • (Android) Made dynamic code files read only to comply with new Android 14 security requirements. This fixes a crash at API level 34+.

Analytics

Authentication

  • Add Firebase Auth Emulator support. Set the environment variable USE_AUTH_EMULATOR=yes (and optionally AUTH_EMULATOR_PORT, default 9099) to connect to the local Firebase Auth Emulator.

Google Mobile Ads

  • (iOS) Updated dependency to Google-Mobile-Ads-SDK version 10.10.0.
  • (Android) Updated dependency to play-services-ads version 22.3.0.

Version 11.4.0 - August 09, 2023

  • (Android) Update to Firebase Android BoM version 32.2.2.
  • (iOS) Update to Firebase Cocoapods version 10.13.0.
  • (iOS) 32-bit iOS builds (i386 and armv7) are no longer supported.
  • Add FirebaseApp.GetApps(), to return the list of firebase::App instances.

Cloud Firestore

  • Add support for disjunctions in queries (OR queries) (#1335).

Google Mobile Ads

  • (Android) Fixed a crash when initializing GMA without a Firebase App.

Version 11.3.0 - July 17, 2023

  • (Android) Update to Firebase Android BoM version 32.2.0.
  • (iOS) Update to Firebase Cocoapods version 10.12.0.
  • (Desktop) Fixed an error loading google-services.json and google-services-desktop.json from paths with international characters on Windows.

Authentication

  • (Android) Fixed an issue where VerifyPhoneNumber's internal builder failed to create PhoneAuthOptions with certain compiler settings.
  • (iOS) Fixed an issue where functions that return AuthResult were not including updated credentials when encountering errors.

Cloud Firestore

  • (Android) Fix the intermittent global references exhaustion crash when working with documents with a large number of keys and/or large map and/or array fields. (#1364).

Google Mobile Ads

  • (iOS) Updated dependency to Google-Mobile-Ads-SDK version 10.8.0.
  • (Android) Updated dependency to play-services-ads version 22.2.0.

Remote Config

  • (Desktop) Additional fix for handling of non-English time zone names on Windows.

Version 11.2.0 - June 21, 2023

  • (Android) Update to Firebase Android BoM version 32.1.1.
  • (iOS) Update to Firebase Cocoapods version 10.11.0.

App Check

  • (Desktop) Fixed expired tokens being cached on 32-bit systems.

Google Mobile Ads

  • (iOS) Updated dependency to Google-Mobile-Ads-SDK version 10.6.0.

Remote Config

  • (Android) Fixed the ConfigUpdate classes being missing from the proguard files.
  • (Desktop) Fixed handling of time zones on Windows when the time zone name in the current system language contains an accented character or apostrophe. This adds a requirement for applications using Remote Config on Windows desktop to link the "icu.dll" system library.

Version 11.1.0 - May 31, 2023

  • (Android) Update to Firebase Android BoM version 32.1.0.
  • (iOS) Update to Firebase Cocoapods version 10.10.0.
  • (Android) Fix for deadlock within JniResultCallback, commonly seen within Messaging, but affecting other products as well.

Realtime Database

  • (Desktop) Fixed a crash on Windows when the user's home directory contains non-ANSI characters (Unicode above U+00FF).

Cloud Firestore

  • (Desktop) Fixed a crash on Windows when the user's home directory contains non-ANSI characters (Unicode above U+00FF).
  • Added MultiDb support. (#1321).

Google Mobile Ads

  • (Android) Updated dependency to play-services-ads version 22.1.0.
  • (iOS) Updated dependency to Google-Mobile-Ads-SDK version 10.5.0.

Cloud Storage

  • (Desktop) Fixed a crash on Windows when uploading files from a path containing non-ANSI characters (Unicode above U+00FF).

Version 11.0.1 - May 9, 2023

Authentication

  • (iOS) Fixed a crash in Credential::is_valid() when an AuthResult contains an invalid credential, such as when signing in anonymously.

Version 11.0.0 - May 04, 2023

  • Update minimum supported C++ standard to C++14.
  • (Android) Update to Firebase Android BoM version 32.0.0.
  • (iOS) Update to Firebase Cocoapods version 10.9.0.
  • (iOS, tvOS, Desktop) iOS, tvOS, and macOS SDKs are now built using Xcode 14.1.

AdMob

  • Removed deprecated AdMob SDK. Please use the included Google Mobile Ads SDK ("GMA") instead.

App Check

  • Adds support for Firebase App Check on Android, iOS, tvOS, and desktop platforms.

Authentication

  • Deprecated a number of methods, appending _DEPRECATED to some of their names. This is a breaking change; you must either modify your code to refer to the _DEPRECATED methods, or switch to the new methods, which have new return types AuthResult and User (rather than SignInResult and User *). The deprecated methods will be removed in the next major release of the Firebase C++ SDK. (Note: do not mix and match using the old and new methods or undefined behavior may result.)

Cloud Firestore

  • Added Query::Count(), which fetches the number of documents in the result set without actually downloading the documents (#1207).

Google Mobile Ads

  • (Android) Updated dependency to play-services-ads version 22.0.0.
  • (iOS) Updated dependency to Google-Mobile-Ads-SDK version 10.4.0.

Remote Config

Version 10.7.0 - March 28, 2023

  • (Android) Update to Firebase Android BoM version 31.3.0.
  • (iOS) Update to Firebase Cocoapods version 10.7.0.
  • Add build time warning for C++11, since the next major release of the Firebase C++ SDK will set the new minimum C++ version to C++14.

Version 10.6.0 - March 7, 2023

  • (Android) Update to Firebase Android BoM version 31.2.3.
  • (iOS) Update to Firebase Cocoapods version 10.6.0.

Version 10.5.0 - February 14, 2023

  • (Android) Update to Firebase Android BoM version 31.2.1.
  • (iOS) Update to Firebase Cocoapods version 10.5.0.

Version 10.4.0 - January 24, 2023

  • (Android) Update to Firebase Android BoM version 31.2.0.
  • (iOS) Update to Firebase Cocoapods version 10.4.0.
  • (Desktop) On macOS, in order to support sandbox mode, apps can define a key/value pair for FBAppGroupEntitlementName in Info.plist. The value associated with this key will be used to prefix semaphore names created internally by the Firebase C++ SDK so that they conform with macOS sandbox requirements.

Analytics

  • Add analytics::SetConsent() and analytics::GetSessionId() APIs.

Google Mobile Ads

  • (Android) Updated dependency to play-services-ads version 21.4.0. This new version requires Multidex to be enabled in your Android builds.
  • (iOS) Updated dependency to Google-Mobile-Ads-SDK version 9.14.0.

Version 10.3.0 - December 13, 2022

  • (Android) Update to Firebase Android BoM version 31.1.1.
  • (iOS) Update to Firebase Cocoapods version 10.3.0.

Version 10.2.0 - November 29, 2022

  • (Android) Update to Firebase Android BoM version 31.1.0.
  • (iOS) Update to Firebase Cocoapods version 10.2.0.
  • (Desktop) Linux x86 libraries have been fixed.

NOTE

  • The next major release of the Firebase C++ SDK will drop support for C++11, setting the new minimum C++ version to C++14. For more information please see our C++ Language Standard Support Criteria.

Version 10.1.0 - November 1, 2022

  • (Android) Update to Firebase Android BoM version 31.0.2.
  • (iOS) Update to Firebase Cocoapods version 10.1.0.
  • Linux x86 builds are broken since C++ SDK version 9.6.0. A fix is in progress.

Cloud Firestore

  • (Android) Reduce the number of JNI global references consumed when creating or updating documents (#1111).

Version 10.0.0 - October 13, 2022

  • (Android) Update to Firebase Android BoM version 31.0.0.
  • (iOS) Update to Firebase Cocoapods version 10.0.0.
  • Remove unused headers for Performance Monitoring and Test Lab from the package.

AdMob

  • (iOS) Temporarily pinned AdMob dependency to a special version of the Google-Mobile-Ads-SDK Cocoapod, "7.69.0-cppsdk3", to maintain compatibility with version 10.x of the Firebase iOS SDK.

Authentication

Google Mobile Ads

  • (iOS) Updated iOS dependency to Google Mobile Ads SDK version 9.11.0.1.

Version 9.6.0 - September 22, 2022

  • (Android) Update to Firebase Android BoM version 30.5.0.
  • (iOS) Update to Firebase Cocoapods version 9.6.0.

Google Mobile Ads

  • (iOS) Updated iOS dependency to Google Mobile Ads SDK version 9.9.0.
  • (Android) Updated Android dependency to Google Mobile Ads SDK version 21.2.0.

Version 9.5.0 - September 8, 2022

  • (Android) Update to Firebase Android BoM version 30.4.0.
  • (iOS) Update to Firebase Cocoapods version 9.5.0.

Version 9.4.0 - August 9, 2022

  • (Desktop) Fixed an issue with embedded dependencies that could cause duplicate symbol linker errors in conjunction with other libraries (#989).
  • (Android, iOS, Linux, macOS 32-bit) Fixed an integer overflow which could result in a crash or premature return when waiting for a Future with a timeout (#1042).

Google Mobile Ads

  • (iOS) Updated iOS dependency to Google Mobile Ads SDK version 9.7.0.

Version 9.3.0 - July 20, 2022

  • (Android, Linux) Fixed a concurrency bug where waiting for an event with a timeout could occasionally return prematurely, as if the timeout had occurred (#1021).

Version 9.2.0 - June 28, 2022

  • (Android) Switched over to Android BoM (Bill of Materials) for dependency versions. This requires Gradle 5.

Google Mobile Ads

  • Added the Google Mobile Ads SDK with updated support for AdMob. See the Get Started Guide for more information.

AdMob

  • The old AdMob SDK has been deprecated. Please update your app to use the new Google Mobile Ads SDK, which facilitates similar functionality.

Realtime Database

  • (Desktop) If the app data directory doesn't exist, create it. This fixes an issue with disk persistence on Linux.

Cloud Firestore

  • Added TransactionOptions to control how many times a transaction will retry commits before failing (#966).

FCM

  • (Android) Fixed #973. Make sure all the resources are closed in RegistrationIntentService.

Version 9.1.0 - June 6, 2022

  • (Android) Fixed a bug that required Android apps to include com.google.android.gms:play-services-base as an explicit dependency when only using AdMob, Analytics, Remote Config, or Messaging.

Analytics

Cloud Firestore

  • (Desktop) On Windows, you must additionally link against the bcrypt and dbghelp system libraries.

Cloud Functions

  • Add a new method GetHttpsCallableFromURL, to create callables with URLs other than cloudfunctions.net.

Version 9.0.0 - May 10, 2022

  • (iOS) Firebase C++ on iOS is now built using Xcode 13.3.1.
  • (Android) Firebase C++ on Android is now built against NDK version r21e.
  • (Android) Support for gnustl (also known as libstdc++) has been removed. Please use libc++ instead. Android libraries have been moved from libs/android/ARCH/STL to libs/android/ARCH.

AdMob

  • (iOS) Temporarily pinned AdMob dependency to a special version of the Google-Mobile-Ads-SDK Cocoapod, "7.69.0-cppsdk2", to maintain compatibility with version 9.x of the Firebase iOS SDK.

Analytics

  • Removed deprecated event names and parameters.

Realtime Database

  • (Desktop) Fixed a bug handling server timestamps on 32-bit CPUs.

Cloud Storage

  • (Desktop) Set Content-Type HTTP header when uploading with custom metadata.

Version 8.11.0 - April 21, 2022

Realtime Database

  • (Desktop) Upgrade LevelDb dependency to 1.23 (#886).
  • (Desktop) Enabled Snappy compression support in LevelDb (#885).

Cloud Firestore

  • (Desktop) Upgrade LevelDb dependency to 1.23 (#886).
  • (Desktop) Enabled Snappy compression support in LevelDb (#885).

Version 8.10.0 - March 27, 2022

  • (iOS) Fixed additional issues on iOS 15 caused by early initialization of Firebase iOS SDK.

Remote Config

  • Fixed default Fetch() timeout being 1000 times too high.

Cloud Storage

  • (Desktop) Added retry logic to PutFile, GetFile, and other operations.

Version 8.9.0 - January 25, 2022

  • (iOS) Fixed an intermittent crash on iOS 15 caused by constructing C++ objects during Objective-C's +load method. (#706) (#783)
  • Internal changes to Mutex class.

Version 8.8.0 - December 2, 2021

  • Fixed a data race that could manifest as null pointer dereference in FutureBase::Release(). (#747)
  • (iOS) iOS SDKs are now built using Xcode 12.4.
  • (Desktop) macOS SDKs are now built using Xcode 12.4.

Authentication

  • (Desktop) Fixed a crash in error_code() when a request is cancelled or times out. (#737)

Cloud Firestore

  • Fix "unaligned pointers" build error on macOS Monterey (#712).

FCM

  • (Android) Fixed crash during termination. (#739) (#745)
  • (Android) Fixed crash during initialization. (#760)

Remote Config

  • (Desktop) Fixed cache expiration time value used by RemoteConfig::FetchAndActivate(). (#767)

Version 8.7.0 - November 4, 2021

  • (Android) Minimum SDK version is now 19.
  • Variant double type now support 64-bit while saving to json. (#1133).

Analytics

  • (tvOS) Analytics is now supported on tvOS.

Cloud Firestore

  • Released to general availability for Android and iOS (desktop support remains in beta).
  • (iOS) Fix a crash when Transaction.GetSnapshotAsync() was invoked after FirebaseFirestore.TerminateAsync() (#8760).

Version 8.6.0 - October 5, 2021

  • (Desktop) MacOS SDKs are now built using Xcode 12.2, and include support for ARM-based Mac systems.
  • (iOS) iOS SDKs are now built using Xcode 12.2.

Authentication

  • (Desktop) Fix a crash that would occur if parsing the JSON response from the server failed (#692).

FCM

  • (Android) Fixes an issue to receive token when initialize the app. (#667).

Version 8.5.0 - September 15, 2021

  • Updating Android and iOS dependencies to the latest.
  • Fixes an issue with generating Proguard files. (#664).

Version 8.4.0 - August 27, 2021

  • Updating Android and iOS dependencies to the latest.

Cloud Firestore

  • Added operator== and operator!= for SnapshotMetadata, Settings, QuerySnapshot, DocumentSnapshot, SetOptions, and DocumentChange.

Version 8.3.0 - July 27, 2021

  • This release adds tvOS C++ libraries that wrap the community-supported Firebase tvOS SDK. libs/tvos contains tvOS-specific libraries, and the xcframeworks directory now includes support for both iOS and tvOS. The following products are currently included for tvOS: Auth, Database, Firestore, Functions, Installations, Messaging, Remote Config, Storage.
  • When building from source, the compiler setting of "no exceptions" on app is PRIVATE now and will not affect any other targets in the build.

Cloud Firestore

  • Removed the deprecated Firestore::RunTransaction(TransactionFunction*) function. Please use the overload that takes a std::function argument instead.
  • FieldValue::Increment functions are no longer guarded by the INTERNAL_EXPERIMENTAL macro.
  • added more validation of invalid input.
  • added an is_valid method to the public API classes that can be in an invalid state.

Version 8.2.0 - July 14, 2021

  • (Android) Updated Flatbuffers internal dependency from version 1.9 to 1.12.

Cloud Firestore

  • Deprecated the Firestore::RunTransaction(TransactionFunction*) function. Please use the overload that takes a std::function argument instead.
  • Removed the deprecated EventListener class.
  • Removed the deprecated overloads of AddSnapshotListener and AddSnapshotsInSyncListener functions that take an EventListener* argument. Please use the overloads that take a std::function argument instead.

Version 8.1.0 - June 30, 2021

Cloud Firestore

  • Fixed a linker error when DocumentChange::npos was used. (#474).
  • Added Firestore::NamedQuery that allows reading the queries used to build a Firestore Data Bundle.

Version 8.0.0 - June 18, 2021

  • (Android) Firebase no longer supports STLPort. Use libc++ instead.
  • (Android) Firebase support for gnustl (also known as libstdc++) is deprecated and will be removed in the next major release. Use libc++ instead.
  • (Android) Fixed a potential SIGABRT when an app was created with a non-default app name on Android KitKat (#429).
  • (iOS) A database URL is no longer required to be present in GoogleService-Info.plist when not using the Realtime Database.

AdMob

  • (iOS) Temporarily pinned AdMob dependency to a special version of the Google-Mobile-Ads-SDK Cocoapod, "7.69.0-cppsdk", to maintain compatibility with version 8.x of the Firebase iOS SDK.

Analytics

  • Removed SetCurrentScreen() following its removal from the iOS SDK and deprecation in the Android SDK. Use LogEvent with the ScreenView event to manually log screen changes.

Cloud Firestore

  • Added Firestore::LoadBundle to enable loading Firestore data bundles into the SDK cache. Firestore::NamedQuery will be available in a future release.

Instance ID

  • Removed support for the previously-deprecated Instance ID SDK.

Remote Config

  • The previously-deprecated static methods have been removed. Use the new instance-based firebase::remote_config::RemoteConfig API instead.
  • (Android) Fix for getting Remote Config instances for specific app objects. (#991).

Version 7.3.0 - April 27, 2021

  • (iOS) Update dependencies.
  • (Android) Fix a gradle error if ANDROID_NDK_HOME is not set.

Version 7.2.0 - April 14, 2021

  • (Android) Firebase support for STLPort is deprecated and will be removed in the next major release. Please use libc++ instead.
  • (iOS) iOS SDKs are now built using Xcode 12.
  • (iOS) iOS SDKs are now providing XCFrameworks instead of Frameworks.
  • Fixed rare crashes at application exit when destructors were being executed (#345).
  • (Android) Removed checks for Google Play services for Auth, Database, Functions and Storage as the native Android packages no longer need it. (#361).

Realtime Database

  • Fixed a potential crash that can occur as a result of a race condition when adding, removing and deleting ValueListeners or ChildListeners rapidly.
  • Fixed a crash when setting large values on Windows and Mac systems (#517).

Version 7.1.1 - March 02, 2021

  • (Android) Now uses non-conflicting file names for embedded resources in Android builds. This fixes segfault crashes on old Android devices (Android 5.x and below).

Version 7.1.0 - February 16, 2021

  • (iOS) Re-enabled Bitcode in iOS builds ([#266][https://github.com/firebase/firebase-cpp-sdk/issues/266]).

Authentication

  • You can now specify a language for emails and text messages sent from your apps using UseAppLanguage() or set_language_code().

Cloud Firestore

  • Fixed partial updates in Update() with FieldValue::Delete() (#882).

FCM

  • (Android) Now uses enqueueWork instead of startService. This fixes lost messages with data payloads received when the app is in the background. (#877

Remote Config

  • Added firebase::remote_config::RemoteConfig class with new instance-based APIs to better manage fetching config data.
  • Deprecated old module-based API in favor of the new instance-based API instead.
  • (Desktop) Fixed multiple definition of Nanopb symbols in binary SDK ([#271][https://github.com/firebase/firebase-cpp-sdk/issues/271]).

Version 7.0.1 - February 1, 2021

Firebase installations

  • (Android) Fixed incorrect STL variants, which fixes a linker error on Android.

Version 7.0.0 - January 28, 2021

  • (iOS) iOS SDKs are now built using Xcode 11.7.
  • (Desktop) Windows libraries are now built using Visual Studio 2019. While VS 2019 is binary-compatible with VS 2015 and VS 2017, you must use VS 2019 or newer to link the desktop SDK. The libraries have been moved from libs/windows/VS2015 to libs/windows/VS2019 to reflect this.
  • (Desktop) Linux libraries are now built with both the C++11 ABI and the legacy ABI. The libraries have been moved from libs/linux/${arch} to libs/linux/${arch}/legacy and libs/linux/${arch}/cxx11 to reflect this.

AdMob

  • (Android) Fixed a JNI error when initializing without Firebase App.

Analytics

  • Removed deprecated SetMinimumSessionDuration call.

Firebase installations

  • Added Firebase installations SDK. See Documentation for details.

Instance ID

  • Marked Instance ID SDK as deprecated.

FCM

  • Added GetToken and DeleteToken APIs.
  • Removed deprecated Send() function.
  • raw_data has been changed from a std::string to a std::vector<uint8_t>, and can now be populated.

Cloud Firestore

  • Cloud Firestore C++ is now in Beta.
  • Added support for Query::WhereNotEqualTo and Query::WhereNotIn.
  • Added support for Settings::set_cache_size_bytes and Settings::cache_size_bytes.
  • Query methods that return new Query objects are now const.
  • Added new internal HTTP headers to the gRPC connection.
  • Fixed a crash when writing to a document after having been offline for long enough that the auth token expired (#182).

Version 6.16.1 - October 20, 2020

Realtime Database

  • Fixed an issue with persistent storage.
  • Fixed a problem with missing symbols on Windows.

Version 6.16.0 - October 2, 2020

  • (iOS) The minimum supported Xcode version for the prebuilt SDK is 11.6.

AdMob

  • Fixed an issue when creating and loading interstitial ads.

Authentication

  • Fixed compiler error related to SignInResult.

Realtime Database

  • Enabled offline persistence.

Cloud Firestore

  • Fixed a deadlock issue caused by not using an event loop.
  • Added error_message parameter to snapshot listener callbacks.

FCM

  • Updated the library to be compatible with Android O.
  • Deprecated the Send function.

Version 6.15.1 - June 29, 2020

  • Fixed an issue that warns about Future handle not released properly.

Cloud Firestore

  • all members of Error enumeration are now prefixed with kError; for example, Error::kUnavailable is now Error::kErrorUnavailable, which is more consistent with other Firebase C++ SDKs.
  • Firestore can now be compiled on Windows even in presence of min and max macros defined in <windows.h>.

Version 6.15.0 - June 2, 2020

  • Fixed an assert creating a custom App when there is no default App.

Cloud Firestore

  • Removed *LastResult functions from the public API.
  • Dropped the From prefix from the static functions in FieldValue
  • CollectionReference::id now returns a const reference.
  • Fixed absl time_internal linker error on Windows.
  • Changed the signature of the callback passed to Firestore::RunTransaction to pass the parameters by mutable reference, not by pointer.

Version 6.14.1 - May 18, 2020

Authentication

  • Added SignInResult.UserInfo.updated_credential field. On iOS, kAuthErrorCredentialAlreadyInUse errors when linking with Apple may contain a valid updated_credential for use in signing-in the Apple-linked user.

Version 6.14.0 - April 23, 2020

Cloud Firestore

  • Firestore.LoggingEnabled is replaced by Firestore.LogLevel for consistency with other Firebase Unity APIs. The getter for this property has been removed.

Version 6.12.0 - March 5, 2020

  • Added experimental support for Cloud Firestore SDK, available on all supported platforms. Please note that the API is subject to change.

Version 6.11.0 - February 20, 2020

  • (iOS) The minimum supported Xcode version is 10.3.
  • When creating an App, the project_id from the default App is now used if one is not provided.

Realtime Database

  • (Desktop) Fixed an issue with Database connecting to the server after the Auth token is revoked.

Version 6.10.0 - January 30, 2020

  • (iOS) Updated the CMakeLists.txt to link static libraries stored under libs/ios/universal for iOS targets.

Authentication

  • Reverted the API of an experimental FederatedAuthHandler callback handler.
  • (iOS) Added a new version of OAuthProvider::GetCredential, which takes a nonce parameter as required by Apple Sign-in.

Version 6.9.0 - December 27, 2019

Authentication

  • Added Auth::SignInWithProvider, User::LinkWithProvider, and User::ReauthenticateWithProvider, allowing sign-in with third-party auth providers.
  • Added constant kProviderId strings to auth provider classes.
  • (iOS): Added support for linking Apple Sign-in credentials.

FCM

  • (Android): Added the option to enable or disable message delivery metrics export to BigQuery. This functionality is currently only available on Android. Stubs are provided on iOS for cross platform compatibility.

Version 6.8.0 - December 3, 2019

  • (Linux) Added compiler/stdlib check to ensure both the developer's executable and Firebase library are compiled with the same compiler and stdlib.
  • Fixed an issue where resource generation from google-services.json would fail if python3 was used to execute the resource generation script.

AdMob

  • (Android): Fixed a potentially non thread safe operation in the destruction of BannerViews.

Version 6.7.0 - November 13, 2019

  • Added noexcept to move constructors to ensure STL uses move where possible.
  • (Windows) Fixed bug where literal value 0 will call string constructor for Variant class.
  • Added small string optimisation for Variant.
  • Reduced number of new/delete for Variant if copying same type.
  • Ensure map sort order for variant is consistent.

Analytics

  • (iOS) Fixed the racy behavior of analytics::GetAnalyticsInstanceId() after calling analytics::ResetAnalyticsData().

Realtime Database

  • Fixed an issue causing timestamps to not be populated correctly when using DatabaseReference::UpdateChildren().
  • (Desktop) Fixed an issue preventing listener events from being triggered after DatabaseReference::UpdateChildren() is called.
  • (Desktop) Functions that take const char* parameters will now fail gracefully if passed a null pointer.
  • (Desktop) Fixed an issue causing. DatabaseReference::RunTransaction() to fail due to datastale when the location previously stored a vector with more than 10 items or a map with integer keys.
  • (Desktop) Fixed an issue that could result in an incorrect snapshot being passed to listeners under specific circumstances.
  • (Desktop): Fixed ordering issue of children when using OrderBy on double or int64 types with large values.

Cloud Storage

  • (iOS/Android) Fixed an issue where Storage::GetReferenceFromUrl would return an invalid StorageReference.
  • (Desktop) Changed url() to return the empty string if the Storage instance was created with the default (null) URL.

Version 6.6.1 - October 2, 2019

  • Fixed a potential undefined reference in Future::OnCompletion.

Version 6.6.0 - September 25, 2019

Authentication

  • (Android) Fixed assert when not using default app instance.
  • (Desktop) Fixed not loading provider list from cached user data.

Realtime Database

  • (Desktop) Queries on locations in the database with query rules now function properly, instead of always returning "Permission denied".
  • (Desktop) Fixed the map-to-vector conversion when firing events that have maps containing enitrely integer keys.

Remote Config

  • (Android) Fixed a bug when passing a Variant of type Blob to SetDefaults() on Android.

Version 6.5.0 - September 10, 2019

Authentication

  • (Linux) Improved error logging if libsecret (required for login persistence) is not installed on Linux.

Realtime Database

  • The database now supports setting the log level independently of the system level logger.

Version 6.4.0 - August 26, 2019

  • Fixed an issue causing Futures to clear their data even if a reference was still being held.

Authentication

  • Fixed an issue with updated user info not being persisted.

Realtime Database

  • (Desktop) Fixed a crash when saving a ServerTimestamp during a transaction.

Version 6.3.0 - August 14, 2019

  • (iOS/Android) Fixed a bug that allows custom firebase::App instances to be created after the app has been restarted.

Authentication

  • (Desktop) Changed destruction behavior. Instead of waiting for all async operations to finish, now Auth will cancel all async operations and quit. For callbacks that are already running, this will protect against cases where auth instances might not exist anymore.
  • (iOS) Fixed an exception in firebase::auth::VerifyPhoneNumber.
  • (iOS) Stopped Auth from hanging on destruction if any local futures remain in scope.

Realtime Database

  • (Desktop) Fixed an issue that could cause a crash when updating the descendant of a location with a listener attached.

Version 6.2.2 - July 26, 2019

Authentication

  • (Desktop) After loading a persisted user data, ensure token is not expired.

Realtime Database

  • (Desktop) Fixed use of an expired auth token after it's loaded from persistent storage.
  • (Desktop) Fixed DatabaseReference::RunTransaction() sending invalid data to the server which causes error message "Error on incoming message" and freeze.

Cloud Functions

  • (Desktop) Fixed use of an expired auth token after it's loaded from persistent storage.

Cloud Storage

  • (Desktop) Fixed use of an expired auth token after it's loaded from persistent storage.

Version 6.2.0 - July 2, 2019

Instance ID

  • (Android) Fixed a crash when destroying InstanceID objects.
  • Added support for custom domains.

Realtime Database

  • Added a way to configure log verbosity of Realtime Database instances.

Version 6.1.0 - June 6, 2019

Authentication

  • User's credentials will now persist between sessions. See the documentation for more information.
  • As part of the above change, if you call current_user() immediately after creating the Auth instance, it will block until the saved user's state is finished loading.
  • Fixed an issue where Database/Functions/Storage might not use the latest auth token immediately after sign-in.
  • Fixed an issue where an error code could get reported incorrectly on Android.

Realtime Database

  • (Desktop) Fixed an issue that could cause a crash during shutdown.
  • (iOS) Fixed a race condition that could cause a crash when cleaning up database listeners on iOS.
  • (iOS) Fixed an issue where long (64-bit) values could get written to the database incorrectly (truncated to 32-bits).

Cloud Functions

  • Change assert to log warning when App is deleted before Cloud Functions instance is deleted.

FCM

  • Added channel_id to Messaging notifications.

Version 6.0.0 - May 7, 2019

Authentication

  • Fixed a race condition updating the current user.

FCM

  • (iOS/Android) Fix an issue where Subscribe and Unsubscribe never returned if you were set not to receive a registration token.

Invites

  • Removed Firebase Invites library, as it is no longer supported.

Remote Config

  • Removed functions using config namespaces, which were deprecated in a previous release.

Analytics

  • Deprecated SetMinimumSessionDuration.

AdMob

  • (Android) To work around a incompatible dependency, AdMob temporarily requires an additional dependency on com.google.android.gms:play-services-measurement-sdk-api:16.5.0

Version 5.7.0 - April 19, 2019

As this release of the Firebase C++ SDK is the final version to support Firebase Invites, it will remain available for download here.

Remote Config

  • Config namespaces are now deprecated. You'll need to switch to methods that use the default namespace.

AdMob

  • (Android) To work around a incompatible dependency, AdMob temporarily requires an additional dependency on com.google.android.gms:play-services-measurement-sdk-api:16.4.0

Version 5.6.1 - April 5, 2019

  • (iOS) Updated to the latest iOS SDK to fix a crash on firebase::App creation caused by a race condition. The crash could occur when accessing the [FIRApp firebaseUserAgent] property of the iOS FIRApp.

Version 5.6.0 - March 18, 2019

  • Firebase C++ is now open source.
  • Fixed a crash when deleting firebase::App before deleting other Firebase subsystems.

Authentication

  • (iOS) Added Game Center authentication.

Realtime Database

  • (Desktop) Reworked how cached server values work to be more in line with mobile implementations.
  • (Desktop) Simultaneous transactions are now supported.
  • (Desktop) The special Timestamp ServerValue is now supported.
  • (Desktop) KeepSynchronized is now supported.

Version 5.5.0 - February 19, 2019

  • (Android) Added a gradle file to the SDK that handles adding Firebase Android dependencies to your Firebase C++ apps. See the Firebase C++ Samples for example usage.

Invites

  • Invites is deprecated. Please refer to https://firebase.google.com/docs/invites for details.

Version 5.4.4 - January 18, 2019

AdMob

  • (iOS) Fixed an issue with Rewarded Video ad unit string going out of scope.

Cloud Functions

  • (Android) Fixed an issue with error handling.

Version 5.4.3 - November 30, 2018

Cloud Storage

  • (iOS): Fixed an issue when downloading files with GetBytes.

Version 5.4.2 - November 15, 2018

Authentication

  • (Android): Removed an irrelevant error about the Java class FirebaseAuthWebException.

Version 5.4.0 - October 19, 2018

  • (Android): Fixed short link generation failing with "error 8".

Realtime Database

  • (Desktop) The Realtime Database Desktop SDK uses REST to access your database. Because of this, you must declare the indexes you use with Query::OrderByChild() on Desktop or your listeners will fail.

Version 5.3.1 - October 3, 2018

Invites

  • (Android) Fixed an exception when the Android Minimum Version code option is used on the Android.

Version 5.3.0 - September 20, 2018

  • (iOS) The minimum supported Xcode version is 9.4.1.

Realtime Database

  • (Desktop) Fixed issues in ChildListener.
  • (Desktop) Fixed crash that could occur if the Database was deleted while an asynchronous operation was still in progress.

Cloud Functions

  • (Android) Fixed an issue when a function returns an array.

Version 5.2.1 - August 16, 2018

Authentication

  • Fixed a race condition that was returning the wrong Future when you called the same method twice in quick succession.

Realtime Database

  • Fixed a race condition that was returning the wrong Future when you called the same method twice in quick succession.
  • (Desktop) Fixed support for ChildListener when used with Query::EqualTo(), Query::StartAt(), Query::EndAt(), Query::LimitToFirst() and Query::LimitToLast().
  • Fixed a crash in DatabaseReference/Query copy assignment operator and copy constructor.

Version 5.2.0 - July 20, 2018

  • (Android) Fixed a null reference in the Google Play Services availability checker.

Authentication

  • (Android) Fixed a crash in User::UpdatePhoneNumberCredential().

Realtime Database

  • Added a version of GetInstance() that allows passing in the URL of the database to use.

Cloud Functions

  • Added a way to specify which region to run the function in.

FCM

  • Changed Subscribe() and Unsubscribe() to return a Future.

Version 5.1.1 - June 27, 2018

  • Updated Android and iOS dependency versions only.

Version 5.1.0 - June 22, 2018

Cloud Functions

  • Added support for Cloud Functions on iOS, Android, and desktop.

Analytics

  • Added ResetAnalyticsData() to clear all analytics data for an app from the device.
  • Added GetAppInstanceId() which allows developers to retrieve the current app's analytics instance ID.

Authentication

  • Linking a credential with a provider that has already been linked now produces an error.
  • (iOS) Fixed crashes in User::LinkAndRetrieveDataWithCredential() and User::ReauthenticateAndRetrieveData().
  • (iOS) Fixed photo URL never returning a value on iOS.
  • (Android) Fixed setting profile photo URL with UpdateUserProfile().

Realtime Database

  • Added support for ServerValues in SetPriority() methods.

Version 5.0.0 - June 5, 2018

  • (Android/iOS) Library names have been prefixed with "firebase_", for example libapp.a is now libfirebase_app.a. This brings them in line with the naming scheme used on desktop, and iOS frameworks.
  • (Android) Improved error handling when device is out of space.
  • Removed deprecated accessor methods from Future.

AdMob

  • Removed deprecated accessor methods from BannerView and InterstitialAd.

Authentication

  • Removed deprecated accessors from Auth, Credential, User, and UserInfoInterface, including User::refresh_token().

Realtime Database

  • Removed deprecated accessors from DatabaseReference, Query, DataSnapshot, and MutableData.
  • Added a field to received dynamic links describing the strength of the match.

FCM

  • Added an optional initialization options struct. This can be used to suppress the prompt on iOS that requests permission to receive notifications at start up. Permission can be requested manually using the function firebase::messaging::RequestPermission().

Invites

  • Added OnInviteReceived to Listener base class that includes the strength of the match on the received invite as an enum. Deprecated prior function that received it as a boolean value.

Cloud Storage

  • Removed deprecated accessors from StorageReference.
  • Removed Metadata::download_url() and Metadata::download_urls(). Please use StorageReference::GetDownloadUrl() instead.

Version 4.5.1 - April 16, 2018

Authentication

  • (Desktop) Added support for accessing user metadata.

Realtime Database

  • (Desktop) Fixed a bug to make creation of database instances with invalid URLs return nullptr.
  • (Desktop) Fixed an issue where incorrect values could be passed to OnChildAdded.

FCM

  • Added the SetAutoTokenRegistrationOnInitEnabled() and IsAutoTokenRegistrationOnInitEnabled() methods to enable or disable auto-token generation.

Remote Config

  • Fixed a bug causing incorrect reporting of success or failure during a Fetch().

Version 4.5.0 - Mar 19, 2018

  • (Desktop) Stub implementations of Authentication, Realtime Database, Remote Config, and Cloud Storage have been replaced with functional desktop workflow implementations on Windows, OS X, and Linux.

AdMob

  • Native Express ads have been discontinued, so NativeExpressAdView has been marked deprecated and will be removed in a future version.

Authentication

Realtime Database

  • (Desktop) Stub implementation has been replaced with a functional desktop workflow implementation on Windows, OS X, and Linux.
  • (Desktop) When using Realtime Database on desktop, only one Transaction may be run on a given subtree at the same time.
  • (Desktop) When using Realtime Database on desktop, data persistence is not available.

Remote Config

Cloud Storage

  • (Desktop) Stub implementation has been replaced with a functional desktop workflow implementation on Windows, OS X, and Linux.
  • Added MD5 hash to Metadata.
  • Fixed a crash when deleting listeners and other object instances.
  • Controller can now be used from any thread.
  • (iOS) Fixed incorrect content type when uploading.

Version 4.4.3 - Mar 5, 2018

  • (iOS) Removed unresolved symbols in the App library that could cause errors when forcing resolution.

Version 4.4.2 - Feb 23, 2018

  • (Windows) Updated all static libs to support different C runtime libraries and correspondingly updated the package directory structure.
  • (Linux) Fixed linking problems with all of the C++ stub libraries.
  • (iOS) Now fetches the invite ID when using universal links.
  • (iOS) Fixed crash on failure of dynamic link completion.
  • (iOS) Fixed an issue where some errors weren't correctly reported.

Invites

  • Fixed SendInvite never completing in the stub implementation.

Remote Config

  • Remote Config (iOS) Fixed an issue where some errors weren't correctly reported.

Cloud Storage

  • Fixed Metadata::content_language returning the wrong data.
  • (iOS) Reference paths formats are now consistent with other platforms.
  • (iOS) Fixed an issue where trying to upload to a non-existent path would not complete the Future.
  • (iOS) Fixed a crash when a download fails.

Version 4.4.1 - Jan 26, 2018

Realtime Database

  • SetPersistenceEnabled now sets persistence enabled.

Instance ID

  • (iOS) GetToken no longer fails without an APNS certificate, and no longer forces registering for notifications.

Version 4.4.0 - Jan 3, 2018

Instance ID

  • Added Instance ID library.

Version 4.3.0 - Nov 30, 2017

Authentication

  • Added support for accessing user metadata.

Remote Config

  • (Android) Fixed remote_config::ValueSource conversion.

Version 4.2.0 - Oct 2, 2017

Analytics

  • Fixed a bug which prevented the user ID and user properties being cleared.

Authentication

  • Failed operations now return more specific error codes.
  • (iOS) Phone Authentication no longer requires push notifications. When push notifications aren't available, reCAPTCHA verification is used instead.

Realtime Database

  • (Android) Fixed MutableData::children_count().

FCM

  • Messages sent to users can now contain a link URL.
  • (Android) Fixed a bug which prevented the message ID field being set.

Version 4.1.0 - Aug 23, 2017

  • Added std::function support to Future::OnCompletion, to allow use of C++11 lambdas with captures.
  • Futures are now invalidated when their underlying Firebase API is destroyed.
  • Updated to iOS 4.1.0 SDK and Android 11.2.0 SDK.

AdMob

  • (iOS) Fixed a crash if a BannerView is deleted while a call to Destroy() is still pending.

Realtime Database

  • Added a context pointer to DatabaseReference::RunTransaction, as well as std::function support to allow use of C++11 lambdas with captures.
  • DataSnapshot, DatabaseReference, Query, and other objects are invalidated when their Database instance is destroyed.

FCM

  • Added PollableListener to make it easier to poll for messages in an update loop.
  • (Android) Fixed a bug where message_type was not set in the Message struct.
  • (iOS) Fixed a race condition if a message is received before FCM is initialized.
  • (iOS) Fixed a bug detecting whether the notification was opened if the app was running in the background.

Remote Config

  • When listing keys, the list now includes keys with defaults set, even if they were not present in the fetched config.

Cloud Storage

  • StorageReference objects are invalidated when their Storage instance is destroyed.

Version 4.0.3 - Aug 1, 2017

  • (iOS) Fixed an issue which resulted in custom options not being applied to firebase::App instances.
  • (iOS) Fixed a bug which caused method implementation look ups to fail when other iOS SDKs rename the selectors of swizzled methods.
  • (Android) Fixed future completion if short link creation fails.

FCM

  • (iOS) Fixed message handling when messages they are received via the direct channel to the FCM backend (i.e not via APNS).

Version 4.0.2 - Jul 7, 2017

Analytics

  • Fixed SetCurrentScreen to work from any thread.

Authentication

  • (iOS) Fixed an issue which incorrectly invalidated the current user if credential linking fails.
  • Fixed an issue which caused an app to sometimes crash or not receive a Dynamic Link if it's opened when the app is installed and not running.

FCM

  • (iOS) Fixed a crash when no Listener is set.
  • Fixed Listener::OnTokenReceived occasionally being called twice with the same token.

Version 4.0.1 - Jun 16, 2017

FCM

  • (Android): Fixed an issue where Terminate() was not correctly shutting down the FCM library.
  • (iOS): Fixed an issue where library would crash on start up if there was no registration token.

Dynamic Links and Invites

  • (iOS) Fixed an issue which caused an app to not receive a Dynamic Link if it's opened when the app is installed and not running.

Version 4.0.0 - Jun 9, 2017

  • (Android) Fixed crash in some circumstances after resolving dependencies by updating Google Play services.

Authentication

  • Added support for phone number authentication.
  • Added the ability to retrieve user metadata.
  • Moved token notification to a separate listener object.
  • Added a standalone library separate from Invites.

Invites

  • (iOS) Fixed an issue in the Analytics SDK's method swizzling which resulted in Dynamic Links / Invites not being sent to the application.

FCM

  • (Android) Fixed a regression introduced in 3.0.3 which caused a crash when opening up a notification when the app is running in the background.
  • (iOS) Fixed interoperation with other users of local notifications.

Version 3.1.2 - May 11, 2017

Authentication

  • Fixed a crash caused by a stale memory reference when a firebase::auth::Auth object is destroyed and then recreated for the same App object.
  • Fixed a potential memory corruption when AuthStateListener is destroyed.

Version 3.1.1 - May 9, 2017

  • (Android) Fixed a crash in the Google Play services updater that occurred when clicking outside of the dialog on Android 4.x devices.

Authentication

  • Fixed an issue that caused users to be invalidated when a linking credential fails.
  • Deprecated the User::refresh_token() method.

FCM

  • (Android) Resolved an issue which caused an app to receive an empty message when a notification message is received while the app is in the background and the user then taps on the app icon rather than on the notification message.

Invites

  • (iOS) Fixed an issue which resulted in the app delegate method application:openURL:sourceApplication:annotation: not being called when linking the invites library.

Cloud Storage

  • Modified the API so that it's possible to construct metadata without a storage reference.

Version 3.1.0 - March 8, 2017

Cloud Storage

  • Added an overload for Storage::GetInstance() that accepts a gs://... URL, so you can use Cloud Storage with multiple buckets.

Invites

  • (Android) Fixed an issue where invitations with empty links would fail to be received.

Version 3.0.0 - February 27, 2017

  • Renamed and deprecated methods that were inconsistent with the Google C++ Style Guide. Deprecated methods will be removed in a future release (approximately 2-3 releases from now).

Analytics

  • Added SetCurrentScreen().

Authentication

  • Fixed a race condition accessing user data in callbacks.
  • (Android) Added is_valid() to check if a credential returned by GetCredential() is valid.

Invites

  • (Android) Added a Fetch() function to fetch incoming invitations at times other than application start. You must call this on Android when your app returns to the foreground (on iOS, this is handled automatically).
  • (iOS) Fixed regression since 2.1.1 that broke Invites if the AppDelegate did not implement the open URL method.

FCM

  • Added a field to firebase::messaging::Message specifying whether the message was received when the app was in the background.
  • (Android) Added an AAR file containing the Android manifest changes needed for receiving notifications. You can add this to your project instead of modifying the manifest directly.
  • (iOS) Fixed regression since 2.1.1 that broke FCM on iOS 8 & 9 when an AppDelegate did not implement remote notification methods.

Remote Config

  • Added support for initializing Remote Config defaults from firebase::Variant values, including binary data.

Version 2.1.3 - February 6, 2017

  • Fixed a potential deadlock when running callbacks registered via firebase::Future::OnCompletion.

Authentication

  • (Android) Fixed an error in firebase::auth::User::PhotoUri.

FCM

  • (iOS) Removed hard dependency on Xcode 8.
  • (Android) Fixed an issue where the application would receive an empty message on startup.

Version 2.1.2 - January 20, 2017

AdMob

  • (Android) Fixed an issue in firebase::admob::InterstitialAd that caused a crash after displaying multiple interstitial ads.

Version 2.1.1 - January 18, 2017

Authentication

  • (Android) Fixed an issue that caused a future to never complete when signing in while a user is already signed in.

FCM

  • (iOS) Fixed an issue with method swizzling that caused some of the application's UIApplicationDelegate methods to not be called.
  • (iOS) Fixed an issue which caused a crash when initializing the library when building with Xcode 8 for iOS 10.

Invites

  • (iOS) Fixed an issue with method swizzling that caused some of the application's UIApplicationDelegate methods to not be called.

Version 2.1.0 - December 9, 2016

Cloud Storage

  • Added a C++ client library for Cloud Storage. To get started, see Get Started with Cloud Storage for C++.
  • (Android) Pausing and resuming storage operations will cause the data transfer to fail with the error code kErrorUnknown.

Authentication

  • Added a check for saved user credentials when Authentication is initialized.

Version 2.0.0 - November 7, 2016

AdMob

  • Added support for AdMob Native Express Ads.

Authentication

  • Added the AuthStateListener class that provides notifications when a user is logged in or logged out.

Realtime Database

Invites

Version 1.2.1 - October 3, 2016

Cloud Messaging

  • (Android) Fixed a bug that prevented apps from terminating properly.
  • (iOS) Added missing copy constructor implementation in iOS and stub libraries.

Version 1.2.0 - September 21, 2016

  • (Android) Added firebase::ModuleInitializer, a helper class to initialize Firebase modules and handle any missing dependency on Google Play services.

Cloud Messaging

  • Added firebase::messaging::Notification and associated methods to allow retrieval of the contents of a notification.
  • (iOS) Added support for iOS 10 notifications.
  • (Android) Fixed an issue that caused a crash if Cloud Messaging was initialized before the native library was loaded.

Authentication

  • (Android) Added new API methods, User::SendEmailVerification() and User::EmailVerified() to verify a user's email address.

Remote Config

  • Added GetKeys() and GetKeysByPrefix() methods to allow developers to find parameter keys based on a key prefix.

Invites

  • (iOS) Fixed an issue that could potentially crash an app during shutdown when the InvitesReceiver::Fetch() method is pending.
  • Fixed an issue that occurred when initializing InvitesSender and InvitesReceiver simultaneously.

AdMob

  • Added the Rewarded Video Mediation feature to the C++ SDK. For more information, see the Rewarded Video C++ guide.
  • You can now pass your AdMob App ID to firebase::admob::Initialize() to help reduce latency for the initial ad request.
  • (iOS) You must now call BannerView::Show() to display an ad. Previously, this was only required on Android.
  • Fixed an issue where BannerView::Listener() received an incorrect bounding box.

Version 1.1.0 - August 1, 2016

App

  • Added utility functions to check whether Google Play services is available. See google_play_services::CheckAvailability() and google_play_services::MakeAvailable() for more information.
  • App::Create() will no longer check for Google Play services, nor will it return nullptr. It will always return an App, and the individual Firebase features will check for Google Play services at initialization if required.

Analytics

  • Fixed a crash that occurs when logging string events.

Authentication

  • firebase::auth::GetAuth() now has an option to return a result that indicates whether initialization was successful, and to return nullptr if initialization failed.

Firebase Cloud Messaging

  • firebase::messaging::Initialize() now returns a result that indicates whether initialization was successful.

Invites

  • Added firebase::invites::Initialize(), which you must call once prior to creating InvitesSender or InvitesReceiver instances. This function returns a result that indicates whether initialization was successful.
  • If you call InvitesReceiver::Fetch() or InvitesReceiver::ConvertInvitation() without first calling firebase::invites::Initialize(), the operation will never complete. To work around this issue, ensure that firebase::invites::Initialize() is called once before creating any InvitesReceiver instances.
  • If you create InvitesSender and then InvitesReceiver, the InvitesReceiver may fail to connect, and be unable to fetch results. To work around this issue, you can delay creating the InvitesSender until after the future returned by InvitesReceiver::Fetch() has completed.

Remote Config

  • firebase::remote_config::Initialize() now returns a result that indicates whether initialization was successful.

AdMob

  • firebase::admob::Initialize() now returns a result that indicates whether initialization was successful.

Version 1.0.1 - June 27, 2016

This update includes a variety of documentation updates and minor bug fixes. This update primarily fixes bugs in the AdMob portion of the C++ SDK. These fixes are described below:

  • Modified firebase::App to check for the required version of Google Play services on creation to prevent firebase::App creation from failing if a user's device is out of date. If Google Play services is out of date, a dialog will prompt the user to install a new version. With the previous version of this SDK, you needed needed to manually check for an up-to-date Google Play services SDK using GoogleApiClient.

AdMob

  • Fixed a potential deadlock when using SetListener from a notification callback in firebase::admob::InterstitialAd and firebase::admob::BannerView on iOS.
  • Fixed a race condition on destruction of admob::BannerView on Android.
  • Fixed Future handle leak. An internal memory leak occurred for objects or modules that use futures for the lifetime of the object or module. For example, during the lifetime of a BannerView object, each call to a method which returns a Future could potentially allocate memory which wouldn't be reclaimed until the BannerView object is destroyed.