Firebase C++ Release Notes

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

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

Version 4.0.2 - Jul 7, 2017

Analytics

  • fixed Fixed SetCurrentScreen to work from any thread.

Authentication

  • fixed (iOS) Fixed an issue which incorrectly invalidated the current user if credential linking fails.

Dynamic Links

  • fixed 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

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

Version 4.0.1 - Jun 16, 2017

FCM

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

Dynamic Links and Invites

  • fixed (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

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

Authentication

  • feature Added support for phone number authentication.
  • feature Added the ability to retrieve user metadata.
  • changed Moved token notification to a separate listener object.

Dynamic Links

  • feature Added a standalone library separate from Invites.

Invites

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

FCM

  • fixed (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.
  • fixed (iOS) Fixed interoperation with other users of local notifications.

Version 3.1.2 - May 11, 2017

Authentication

  • fixed 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 Fixed a potential memory corruption when AuthStateListener is destroyed.

Version 3.1.1 - May 9, 2017

  • fixed (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 Fixed an issue that caused users to be invalidated when a linking credential fails.
  • changed Deprecated the User::refresh_token() method.

FCM

  • fixed (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

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

Storage

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

Version 3.1.0 - March 8, 2017

Storage

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

Invites

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

Version 3.0.0 - February 27, 2017

  • changed 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

  • changed Added SetCurrentScreen().

Authentication

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

Invites

  • changed (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).
  • fixed (iOS) Fixed regression since 2.1.1 that broke Invites if the AppDelegate did not implement the open URL method.

FCM

  • changed Added a field to firebase::messaging::Message specifying whether the message was received when the app was in the background.
  • changed (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.
  • fixed (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

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

Version 2.1.3 - February 6, 2017

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

Authentication

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

FCM

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

Version 2.1.2 - January 20, 2017

AdMob

  • fixed (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

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

FCM

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

Invites

  • fixed (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

Storage

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

Authentication

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

Version 2.0.0 - November 7, 2016

AdMob

  • changed Added support for AdMob Native Express Ads.

Authentication

  • changed 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

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

Version 1.2.0 - September 21, 2016

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

Cloud Messaging

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

Authentication

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

Remote Config

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

Invites

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

AdMob

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

Version 1.1.0 - August 1, 2016

App

  • feature Added utility functions to check whether Google Play services is available. See google_play_services::CheckAvailability() and google_play_services::MakeAvailable() for more information.
  • changed 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 Fixed a crash that occurs when logging string events.

Authentication

  • changed 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

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

Invites

  • changed 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.
  • issue 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.
  • issue 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

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

AdMob

  • changed 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:

  • fixed 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 Fixed a potential deadlock when using SetListener from a notification callback in firebase::admob::InterstitialAd and firebase::admob::BannerView on iOS.
  • fixed Fixed a race condition on destruction of admob::BannerView on Android.
  • fixed 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.

Send feedback about...

Need help? Visit our support page.