1169 lines
60 KiB
Markdown
1169 lines
60 KiB
Markdown
Firebase C++ SDK
|
|
================
|
|
|
|
The Firebase C++ SDK provides C++ interfaces for the following Firebase
|
|
services on *iOS* and *Android*:
|
|
|
|
* AdMob
|
|
* Firebase Analytics
|
|
* Firebase Authentication
|
|
* Firebase Cloud Messaging
|
|
* Firebase Dynamic Links
|
|
* Firebase Functions
|
|
* Firebase Instance ID
|
|
* Firebase Realtime Database
|
|
* Firebase Remote Config
|
|
* Firebase Storage
|
|
|
|
## Desktop Workflow Implementations
|
|
|
|
The Firebase C++ SDK includes desktop workflow support for the following subset
|
|
of Firebase features, enabling their use on Windows, OS X, and Linux:
|
|
|
|
* Firebase Authentication
|
|
* Firebase Functions
|
|
* Firebase Remote Config
|
|
* Firebase Realtime Database*
|
|
* Firebase Storage
|
|
|
|
(* See Known Issues in the Release Notes below.)
|
|
|
|
This is a Beta feature, and is intended for workflow use only during the
|
|
development of your app, not for publicly shipping code.
|
|
|
|
## Stub Implementations
|
|
|
|
Stub (non-functional) implementations of the remaining libraries are provided
|
|
for convenience when building for Windows, Mac OS, and Linux so that you don't
|
|
need to conditionally compile code when also targeting the desktop.
|
|
|
|
Directory Structure
|
|
-------------------
|
|
|
|
The following table provides an overview of the Firebase C++ SDK directory
|
|
structure.
|
|
|
|
| Directories | Contents |
|
|
|--------------------------------|---------------------------------------------|
|
|
| include | C++ headers |
|
|
| frameworks/ios/ARCH | iOS frameworks (compiled against libc++) |
|
|
| | A multi-architecture framework is |
|
|
| | provided in the *universal* directory. |
|
|
| libs/ios/ARCH | iOS static libraries (compiled against |
|
|
| | libc++) |
|
|
| | Multi-architecture libraries are |
|
|
| | provided in the *universal* directory. |
|
|
| libs/android/ARCH/STL | Android (GCC 4.8+ compatible) static |
|
|
| | libraries for each architecture and STL |
|
|
| | variant. |
|
|
| | _STL variants available:_ |
|
|
| | * `c++`: LLVM libc++ runtime (recommended) |
|
|
| | * `gnustl`: GNU STL |
|
|
| | * `stlport`: STLport runtime |
|
|
| | More information can be found in the |
|
|
| | [NDK C++ Helper Runtimes](https://developer.android.com/ndk/guides/cpp-support.html#runtimes) |
|
|
| | documentation. |
|
|
| *Desktop Implementations* | |
|
|
| libs/darwin | OS X static libraries (desktop or stub |
|
|
| | implementations, compiled against libc++) |
|
|
| frameworks/darwin | OS X frameworks (desktop or stub |
|
|
| | implementations, compiled against libc++) |
|
|
| libs/linux | Linux static libraries (desktop or stub |
|
|
| | implementations, GCC 4.8+, libc++). |
|
|
| libs/windows | Windows static libraries (desktop or stub |
|
|
| | implementations, MSVC 2015+) |
|
|
|
|
Library / Framework Dependencies
|
|
--------------------------------
|
|
|
|
Each feature has dependencies upon libraries in this SDK and components
|
|
distributed as part of the core Firebase
|
|
[iOS SDK](https://firebase.google.com/docs/ios/setup) and
|
|
[Android SDK](https://firebase.google.com/docs/android/setup).
|
|
|
|
### Android Dependencies
|
|
|
|
| Feature | Required Libraries and Gradle Packages |
|
|
|--------------------------|---------------------------------------------------|
|
|
| Firebase AdMob | libfirebase_admob.a |
|
|
| | libfirebase_app.a |
|
|
| | com.google.firebase:firebase-analytics:16.5.0 |
|
|
| | (Maven package) |
|
|
| | com.google.firebase:firebase-ads:17.2.1 |
|
|
| | (Maven package) |
|
|
| | com.google.android.gms:play-services-measurement-sdk-api:16.5.0 |
|
|
| | (Maven package) |
|
|
| Firebase Analytics | libfirebase_analytics.a |
|
|
| | libfirebase_app.a |
|
|
| | com.google.firebase:firebase-analytics:16.5.0 |
|
|
| | (Maven package) |
|
|
| Firebase Authentication | libfirebase_auth.a |
|
|
| | libfirebase_app.a |
|
|
| | com.google.firebase:firebase-analytics:16.5.0 |
|
|
| | (Maven package) |
|
|
| | com.google.firebase:firebase-auth:17.0.0 |
|
|
| | (Maven package) |
|
|
| Firebase Dynamic Links | libfirebase_dynamic_links.a |
|
|
| | libfirebase_app.a |
|
|
| | com.google.firebase:firebase-analytics:16.5.0 |
|
|
| | (Maven package) |
|
|
| | com.google.firebase:firebase-dynamic-links:17.0.0 |
|
|
| | (Maven package) |
|
|
| Firebase Functions | libfirebase_functions |
|
|
| | libfirebase_auth.a (optional) |
|
|
| | libfirebase_app.a |
|
|
| | com.google.firebase:firebase-analytics:16.5.0 |
|
|
| | (Maven package) |
|
|
| | com.google.firebase:firebase-functions:17.0.0 |
|
|
| | (Maven package) |
|
|
| | com.google.firebase:firebase-auth:17.0.0 |
|
|
| | (Maven package) |
|
|
| Firebase Instance ID | libfirebase_instance_id.a |
|
|
| | libfirebase_app.a |
|
|
| | com.google.firebase:firebase-analytics:16.5.0 |
|
|
| | (Maven package) |
|
|
| | com.google.firebase:firebase-iid:18.0.0 |
|
|
| | (Maven package) |
|
|
| Firebase Messaging | libfirebase_messaging.a |
|
|
| | libfirebase_app.a |
|
|
| | com.google.firebase:firebase-analytics:16.5.0 |
|
|
| | (Maven package) |
|
|
| | com.google.firebase:firebase-messaging:18.0.0 |
|
|
| | (Maven package) |
|
|
| | libmessaging_java.jar (Android service) |
|
|
| Firebase Realtime Database | libfirebase_database.a |
|
|
| | libfirebase_auth.a |
|
|
| | libfirebase_app.a |
|
|
| | com.google.firebase:firebase-analytics:16.5.0 |
|
|
| | (Maven package) |
|
|
| | com.google.firebase:firebase-database:17.0.0 |
|
|
| | (Maven package) |
|
|
| | com.google.firebase:firebase-auth:17.0.0 |
|
|
| | (Maven package) |
|
|
| Firebase Remote Config | libfirebase_remote_config.a |
|
|
| | libfirebase_app.a |
|
|
| | com.google.firebase:firebase-analytics:16.5.0 |
|
|
| | (Maven package) |
|
|
| | com.google.firebase:firebase-config:17.0.0 |
|
|
| | (Maven package) |
|
|
| Firebase Storage | libfirebase_storage.a |
|
|
| | libfirebase_auth.a |
|
|
| | libfirebase_app.a |
|
|
| | com.google.firebase:firebase-analytics:16.5.0 |
|
|
| | (Maven package) |
|
|
| | com.google.firebase:firebase-storage:17.0.0 |
|
|
| | (Maven package) |
|
|
| | com.google.firebase:firebase-auth:17.0.0 |
|
|
| | (Maven package) |
|
|
|
|
Important: Each version of the Firebase C++ SDK supports specific Firebase
|
|
Android SDK module versions. Please ensure that you reference the correct
|
|
version of each Maven package listed above in your Gradle file.
|
|
|
|
### iOS Dependencies
|
|
|
|
iOS users can include either frameworks or static libraries depending upon
|
|
their preferred build environment.
|
|
|
|
#### Frameworks
|
|
|
|
| Feature | Required Frameworks and Cocoapods |
|
|
|------------------------------|----------------------------------------------|
|
|
| Firebase AdMob | firebase_admob.framework |
|
|
| | firebase.framework |
|
|
| | Firebase/AdMob Cocoapod (6.1.0) |
|
|
| | Firebase/Analytics Cocoapod (6.1.0) |
|
|
| Firebase Analytics | firebase_analytics.framework |
|
|
| | firebase.framework |
|
|
| | Firebase/Analytics Cocoapod (6.1.0) |
|
|
| Firebase Authentication | firebase_auth.framework |
|
|
| | firebase.framework |
|
|
| | Firebase/Auth Cocoapod (6.1.0) |
|
|
| Firebase Dynamic Links | firebase_dynamic_links.framework |
|
|
| | firebase.framework |
|
|
| | Firebase/DynamicLinks Cocoapod (6.1.0) |
|
|
| Firebase Functions | firebase_functions.framework |
|
|
| | firebase_auth.framework (optional) |
|
|
| | firebase.framework |
|
|
| | Firebase/Functions Cocoapod (6.1.0) |
|
|
| | Firebase/Auth Cocoapod (6.1.0) |
|
|
| Firebase Instance ID | firebase_instance_id.framework |
|
|
| | firebase.framework |
|
|
| | FirebaseInstanceID Cocoapod (4.1.0) |
|
|
| Firebase Cloud Messaging | firebase_messaging.framework |
|
|
| | firebase.framework |
|
|
| | Firebase/Messaging Cocoapod (6.1.0) |
|
|
| Firebase Realtime Database | firebase_database.framework |
|
|
| | firebase_auth.framework |
|
|
| | firebase.framework |
|
|
| | Firebase/Database Cocoapod (6.1.0) |
|
|
| | Firebase/Auth Cocoapod (6.1.0) |
|
|
| Firebase Remote Config | firebase_remote_config.framework |
|
|
| | firebase.framework |
|
|
| | Firebase/RemoteConfig Cocoapod (6.1.0) |
|
|
| Firebase Storage | firebase_storage.framework |
|
|
| | firebase_auth.framework |
|
|
| | firebase.framework |
|
|
| | Firebase/Storage Cocoapod (6.1.0) |
|
|
| | Firebase/Auth Cocoapod (6.1.0) |
|
|
|
|
Important: Each version of the Firebase C++ SDK supports a specific version of
|
|
the Firebase iOS SDK. Please ensure that you reference the Cocoapod versions
|
|
listed above.
|
|
|
|
#### Libraries
|
|
|
|
If you prefer to link against static libraries instead of frameworks (see the
|
|
previous section) the following table describes the libraries and Cocoapods
|
|
required for each SDK feature.
|
|
|
|
| Feature | Required Libraries and Cocoapods |
|
|
|------------------------------|--------------------------------------------|
|
|
| Firebase AdMob | libfirebase_admob.a |
|
|
| | libfirebase_app.a |
|
|
| | Firebase/AdMob Cocoapod (6.1.0) |
|
|
| | Firebase/Analytics Cocoapod (6.1.0) |
|
|
| Firebase Analytics | libfirebase_analytics.a |
|
|
| | libfirebase_app.a |
|
|
| | Firebase/Analytics Cocoapod (6.1.0) |
|
|
| Firebase Authentication | libfirebase_auth.a |
|
|
| | libfirebase_app.a |
|
|
| | Firebase/Auth Cocoapod (6.1.0) |
|
|
| Firebase Dynamic Links | libfirebase_dynamic_links.a |
|
|
| | libfirebase_app.a |
|
|
| | Firebase/DynamicLinks Cocoapod (6.1.0) |
|
|
| Firebase Functions | libfirebase_functions.a |
|
|
| | libfirebase_app.a |
|
|
| | libfirebase_auth.a (optional) |
|
|
| | Firebase/Functions Cocoapod (6.1.0) |
|
|
| | Firebase/Auth Cocoapod (6.1.0) |
|
|
| Firebase Instance ID | libfirebase_instance_id.a |
|
|
| | libfirebase_app.a |
|
|
| | FirebaseInstanceID Cocoapod (4.1.0) |
|
|
| Firebase Cloud Messaging | libfirebase_messaging.a |
|
|
| | libfirebase_app.a |
|
|
| | Firebase/CloudMessaging Cocoapod (6.1.0) |
|
|
| Firebase Realtime Database | libfirebase_database.a |
|
|
| | libfirebase_app.a |
|
|
| | libfirebase_auth.a |
|
|
| | Firebase/Database Cocoapod (6.1.0) |
|
|
| | Firebase/Auth Cocoapod (6.1.0) |
|
|
| Firebase Remote Config | libfirebase_remote_config.a |
|
|
| | libfirebase_app.a |
|
|
| | Firebase/RemoteConfig Cocoapod (6.1.0) |
|
|
| Firebase Storage | libfirebase_storage.a |
|
|
| | libfirebase_app.a |
|
|
| | libfirebase_auth.a |
|
|
| | Firebase/Storage Cocoapod (6.1.0) |
|
|
| | Firebase/Auth Cocoapod (6.1.0) |
|
|
|
|
Important: Each version of the Firebase C++ SDK supports a specific version of
|
|
the Firebase iOS SDK. Please ensure that you reference the Cocoapod versions
|
|
listed above.
|
|
|
|
### Desktop Implementation Dependencies
|
|
|
|
#### Linux libraries
|
|
|
|
For Linux, library versions are provided for 32-bit (i386) and 64-bit (x86_64)
|
|
platforms.
|
|
|
|
| Feature | Required Libraries |
|
|
|---------------------------------|------------------------------------------|
|
|
| Firebase Authentication | libfirebase_auth.a |
|
|
| | libfirebase_app.a |
|
|
| Firebase Functions | libfirebase_functions.a |
|
|
| | libfirebase_auth.a (optional) |
|
|
| | libfirebase_app.a |
|
|
| Firebase Realtime Database | libfirebase_database.a |
|
|
| | libfirebase_auth.a |
|
|
| | libfirebase_app.a |
|
|
| Firebase Remote Config | libfirebase_remote_config.a |
|
|
| | libfirebase_app.a |
|
|
| Firebase Storage | libfirebase_storage.a |
|
|
| | libfirebase_auth.a |
|
|
| | libfirebase_app.a |
|
|
| Firebase AdMob (stub) | libfirebase_admob.a |
|
|
| | libfirebase_app.a |
|
|
| Firebase Analytics (stub) | libfirebase_analytics.a |
|
|
| | libfirebase_app.a |
|
|
| Firebase Dynamic Links (stub) | libfirebase_dynamic_links.a |
|
|
| | libfirebase_app.a |
|
|
| Firebase Instance ID (stub) | libfirebase_instance_id.a |
|
|
| | libfirebase_app.a |
|
|
| Firebase Cloud Messaging (stub) | libfirebase_messaging.a |
|
|
| | libfirebase_app.a |
|
|
|
|
The provided libraries have been tested using GCC 4.8.0, GCC 7.2.0, and Clang
|
|
5.0 on Ubuntu. When building C++ desktop apps on Linux, you will need to link
|
|
the `pthread` system library (consult your compiler documentation for more
|
|
information).
|
|
|
|
#### OS X libraries
|
|
|
|
For OS X (Darwin), library versions are only provided for the 64-bit (x86_64)
|
|
platform. See the table above (in the "Linux libraries" section) for the list of
|
|
library dependencies. Frameworks are also provided for convenience.
|
|
|
|
| Feature | Required Frameworks |
|
|
|---------------------------------|------------------------------------------|
|
|
| Firebase Authentication | firebase_auth.framework |
|
|
| | firebase.framework |
|
|
| Firebase Functions | firebase_functions.framework |
|
|
| | firebase_auth.framework (optional) |
|
|
| | firebase.framework |
|
|
| Firebase Realtime Database | firebase_database.framework |
|
|
| | firebase_auth.framework |
|
|
| | firebase.framework |
|
|
| Firebase Remote Config | firebase_remote_config.framework |
|
|
| | firebase.framework |
|
|
| Firebase Storage | firebase_storage.framework |
|
|
| | firebase_auth.framework |
|
|
| | firebase.framework |
|
|
| Firebase AdMob (stub) | firebase_admob.framework |
|
|
| | firebase.framework |
|
|
| Firebase Analytics (stub) | firebase_analytics.framework |
|
|
| | firebase.frameworkb |
|
|
| Firebase Dynamic Links (stub) | firebase_dynamic_links.framework |
|
|
| | firebase.framework |
|
|
| Firebase Instance ID (stub) | firebase_instance_id.framework |
|
|
| | firebase.framework |
|
|
| Firebase Cloud Messaging (stub) | firebase_messaging.framework |
|
|
| | firebase.framework |
|
|
|
|
The provided libraries have been tested using Xcode 9.4.1. When building C++
|
|
desktop apps on OS X, you will need to link the `pthread` system library, as
|
|
well as the `CoreFoundation`, `Foundation`, `GSS`, and `Security` OS X system
|
|
frameworks (consult your compiler documentation for more information).
|
|
|
|
#### Windows libraries
|
|
|
|
For Windows, library versions are provided depending on whether your project is
|
|
building in 32-bit (x86) or 64-bit (x64) mode, which Windows runtime environment
|
|
you are using (Multithreaded /MT or Multithreaded DLL /MD), and whether you are
|
|
targeting Release or Debug.
|
|
|
|
| Feature | Required Libraries and Gradle Packages |
|
|
|---------------------------------|------------------------------------------|
|
|
| Firebase Authentication | firebase_auth.lib |
|
|
| | firebase_app.lib |
|
|
| Firebase Functions | firebase_functions.lib |
|
|
| | firebase_auth.lib (optional) |
|
|
| | firebase_app.lib |
|
|
| Firebase Realtime Database | firebase_database.lib |
|
|
| | firebase_auth.lib |
|
|
| | firebase_app.lib |
|
|
| Firebase Remote Config | firebase_remote_config.lib |
|
|
| | firebase_app.lib |
|
|
| Firebase Storage | firebase_storage.lib |
|
|
| | firebase_auth.lib |
|
|
| | firebase_app.lib |
|
|
| Firebase AdMob (stub) | firebase_admob.lib |
|
|
| | firebase_app.lib |
|
|
| Firebase Analytics (stub) | firebase_analytics.lib |
|
|
| | firebase_app.lib |
|
|
| Firebase Dynamic Links (stub) | firebase_dynamic_links.lib |
|
|
| | firebase_app.lib |
|
|
| Firebase Instance ID (stub) | firebase_instance_id.lib |
|
|
| | firebase_app.lib |
|
|
| Firebase Cloud Messaging (stub) | firebase_messaging.lib |
|
|
| | firebase_app.lib |
|
|
|
|
The provided libraries have been tested using Visual Studio 2015 and 2017. When
|
|
building C++ desktop apps on Windows, you will need to link the following
|
|
Windows SDK libraries (consult your compiler documentation for more
|
|
information):
|
|
|
|
| Firebase C++ Library | Windows SDK library dependencies |
|
|
| -------------------- |-------------------------------------------------------|
|
|
| Authentication | `advapi32, ws2_32, crypt32` |
|
|
| Functions | `advapi32, ws2_32, crypt32, rpcrt4, ole32 |
|
|
| Realtime Database | `advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv` |
|
|
| Remote Config | `advapi32, ws2_32, crypt32, rpcrt4, ole32 |
|
|
| Storage | `advapi32, ws2_32, crypt32` |
|
|
|
|
Getting Started
|
|
---------------
|
|
|
|
See our [setup guide](https://firebase.google.com/docs/cpp/setup) to get
|
|
started and download the prebuilt version of the Firebase C++ SDK.
|
|
|
|
Source Code
|
|
-----------
|
|
|
|
The Firebase C++ SDK is open source. You can find the source code (and
|
|
information about building it) at
|
|
[github.com/firebase/firebase-cpp-sdk](https://github.com/firebase/firebase-cpp-sdk).
|
|
|
|
Platform Notes
|
|
--------------
|
|
|
|
### iOS Method Swizzling
|
|
|
|
On iOS, some application events (such as opening URLs and receiving
|
|
notifications) require your application delegate to implement specific methods.
|
|
For example, receiving a notification may require your application delegate to
|
|
implement `application:didReceiveRemoteNotification:`. Because each iOS
|
|
application has its own app delegate, Firebase uses _method swizzling_, which
|
|
allows the replacement of one method with another, to attach its own handlers in
|
|
addition to any you may have implemented.
|
|
|
|
The Firebase Cloud Messaging library needs to attach handlers to the application
|
|
delegate using method swizzling. If you are using these libraries, at load time,
|
|
Firebase will identify your `AppDelegate` class and swizzle the required methods
|
|
onto it, chaining a call back to your existing method implementation.
|
|
|
|
### Custom Android Build Systems
|
|
|
|
We currently provide generate\_xml\_from\_google\_services\_json.py to convert
|
|
google-services.json to .xml resources to be included in an Android application.
|
|
This script applies the same transformation that the Google Play Services Gradle
|
|
plug-in performs when building Android applications. Users who don't use Gradle
|
|
(e.g ndk-build, makefiles, Visual Studio etc.) can use this script to automate
|
|
the generation of string resources.
|
|
|
|
### ProGuard on Android
|
|
|
|
Many Android build systems use
|
|
[ProGuard](https://developer.android.com/studio/build/shrink-code.html) for
|
|
builds in Release mode to shrink application sizes and protect Java source code.
|
|
If you use ProGuard, you will need to add the files in libs/android/*.pro
|
|
corresponding to the Firebase C++ libraries you are using to your ProGuard
|
|
configuration.
|
|
|
|
For example, with Gradle, build.gradle would contain:
|
|
~~~
|
|
android {
|
|
[...other stuff...]
|
|
buildTypes {
|
|
release {
|
|
minifyEnabled true
|
|
proguardFile getDefaultProguardFile('your-project-proguard-config.txt')
|
|
proguardFile file(project.ext.firebase_cpp_sdk_dir + "/libs/android/app.pro")
|
|
proguardFile file(project.ext.firebase_cpp_sdk_dir + "/libs/android/analytics.pro")
|
|
[...and so on, for each Firebase C++ library you are using.]
|
|
}
|
|
}
|
|
}
|
|
~~~
|
|
|
|
### Requiring Google Play services on Android
|
|
|
|
Many Firebase C++ libraries require
|
|
[Google Play services](https://developers.google.com/android/guides/overview) on
|
|
the user's Android device. If a Firebase C++ library returns
|
|
[`kInitResultFailedMissingDependency`](http://firebase.google.com/docs/reference/cpp/namespace/firebase)
|
|
on initialization, it means Google Play services is not available on the device
|
|
(it needs to be updated, reactivated, permissions fixed, etc.) and that Firebase
|
|
library cannot be used until the situation is corrected.
|
|
|
|
You can find out why Google Play services is unavailable (and try to fix it) by
|
|
using the functions in [`google_play_services/availability.h`](http://firebase.google.com/docs/reference/cpp/namespace/google-play-services).
|
|
|
|
Optionally, you can use
|
|
[`ModuleInitializer`](http://firebase.google.com/docs/reference/cpp/class/firebase/module-initializer)
|
|
to initialize one or more Firebase libraries, which will handle prompting the
|
|
user to update Google Play services if required.
|
|
|
|
Note: Some libraries do not require Google Play services and don't return any
|
|
initialization status. These can be used without Google Play services. The table
|
|
below summarizes whether Google Play services is required by each Firebase C++
|
|
library.
|
|
|
|
| Firebase C++ Library | Google Play services required? |
|
|
| ----------------------- |-----------------------------------|
|
|
| Analytics | Not required |
|
|
| AdMob | Not required (usually; see below) |
|
|
| Cloud Messaging | Required |
|
|
| Auth | Required |
|
|
| Dynamic Links | Required |
|
|
| Functions | Required |
|
|
| Instance ID | Required |
|
|
| Realtime Database | Required |
|
|
| Remote Config | Required |
|
|
| Storage | Required |
|
|
|
|
#### A note on AdMob and Google Play services
|
|
|
|
Most versions of the Google Mobile Ads SDK for Android can work properly without
|
|
Google Play services. However, if you are using the
|
|
`com.google.android.gms:play-services-ads-lite` dependency instead of the
|
|
standard `com.google.firebase:firebase-ads` dependency, Google Play services
|
|
WILL be required in your specific case.
|
|
|
|
AdMob initialization will only return `kInitResultFailedMissingDependency` when
|
|
Google Play services is unavailable AND you are using
|
|
`com.google.android.gms:play-services-ads-lite`.
|
|
|
|
### Desktop project setup
|
|
|
|
To use desktop workflow support, you must have an Android or iOS project set
|
|
up in the Firebase console.
|
|
|
|
If you have an Android project, you can simply use the `google-services.json`
|
|
file on desktop.
|
|
|
|
If you have an iOS project and don't wish to create an Android project, you can
|
|
use the included Python script `generate_xml_from_google_services_json.py
|
|
--plist` to convert your `GoogleService-Info.plist` file into a
|
|
`google-services-desktop.json` file.
|
|
|
|
By default, when your app initializes, Firebase will look for a file named
|
|
`google-services.json` or `google-services-desktop.json` in the current
|
|
directory. Ensure that one of these files is present, or call
|
|
`AppOptions::LoadFromJsonConfig()` before initializing Firebase to specify your
|
|
JSON configuration data directly.
|
|
|
|
### Note on Firebase C++ desktop support
|
|
|
|
Firebase C++ SDK desktop support is a **Beta** feature, and is intended for
|
|
workflow use only during the development of your app, not for publicly shipping
|
|
code.
|
|
|
|
|
|
Release Notes
|
|
-------------
|
|
### 6.1.0
|
|
- Overview
|
|
- Added Auth credential persistence on Desktop, fixed issues in Auth and
|
|
Database, and added additional information to Messaging notifications.
|
|
- Changes
|
|
- Auth (Desktop): User's credentials will now persist between sessions. See
|
|
the [documentation](http://firebase.google.com/docs/auth/cpp/manage-users#persist_a_users_credential)
|
|
for more information.
|
|
- Auth (Desktop): 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.
|
|
- Auth (Desktop): Fixed an issue where Database/Functions/Storage might not
|
|
use the latest auth token immediately after sign-in.
|
|
- Auth: Fixed an issue where an error code could get reported incorrectly
|
|
on Android.
|
|
- Database (Desktop): Fixed an issue that could cause a crash during
|
|
shutdown.
|
|
- Database (iOS): Fixed a race condition that could cause a crash
|
|
when cleaning up database listeners on iOS.
|
|
- Database (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.
|
|
- Messaging (Android): Added channel_id to Messaging notifications.
|
|
|
|
|
|
### 6.0.0
|
|
- Overview
|
|
- Fixed issues in Auth and Messaging, removed Firebase Invites, removed
|
|
deprecated functions in Firebase Remote Config, and deprecated a function
|
|
in Firebase Analytics.
|
|
- Changes
|
|
- Updated [Firebase
|
|
iOS](https://firebase.google.com/support/release-notes/ios#6.0.0) and
|
|
[Firebase
|
|
Android](https://firebase.google.com/support/release-notes/ios#2019-05-07)
|
|
dependencies.
|
|
- Auth: Fixed a race condition updating the current user.
|
|
- Messaging (iOS/Android): Fix an issue where Subscribe and Unsubscribe
|
|
never returned if the API was configured not to receive a registration
|
|
token.
|
|
- Invites: Removed Firebase Invites library, as it is no longer supported.
|
|
- Remote Config: Removed functions using config namespaces.
|
|
- Analytics: Deprecated SetMinimumSessionDuration.
|
|
- Known Issues
|
|
- To work around a incompatible dependency, AdMob for Android temporarily
|
|
requires an additional dependency on
|
|
com.google.android.gms:play-services-measurement-sdk-api:16.5.0
|
|
|
|
### 5.7.0
|
|
- Overview
|
|
- Deprecated functions in Remote Config.
|
|
- Changes
|
|
- Remote Config: Config namespaces are now deprecated. You'll need to switch
|
|
to methods that use the default namespace.
|
|
- Known Issues
|
|
- To work around a incompatible dependency, AdMob for Android temporarily
|
|
requires an additional dependency on
|
|
com.google.android.gms:play-services-measurement-sdk-api:16.4.0
|
|
|
|
### 5.6.1
|
|
- Overview
|
|
- Fixed race condition on iOS SDK startup.
|
|
- Changes
|
|
- General (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.
|
|
|
|
### 5.6.0
|
|
- Overview
|
|
- Released an open-source version, added Game Center sign-in to Auth,
|
|
enhanced Database on desktop, and fixed a crash when deleting App.
|
|
- Changes
|
|
- Firebase C++ is now [open source](https://github.com/firebase/firebase-cpp-sdk).
|
|
- Auth (iOS): Added Game Center authentication.
|
|
- Database (Desktop): Reworked how cached server values work to be more in
|
|
line with mobile implementations.
|
|
- Database (Desktop): Simultaneous transactions are now supported.
|
|
- Database (Desktop): The special Timestamp ServerValue is now supported.
|
|
- Database (Desktop): KeepSynchronized is now supported.
|
|
- App, Auth, Database, Remote Config, Storage: Fixed a crash when deleting
|
|
`firebase::App` before deleting other Firebase subsystems.
|
|
|
|
### 5.5.0
|
|
- Overview
|
|
- Deprecated Firebase Invites and updated how Android dependencies are
|
|
included.
|
|
- Changes
|
|
- General (Android): Added a gradle file to the SDK that handles adding
|
|
Firebase Android dependencies to your Firebase C++ apps. See the
|
|
[Firebase C++ Samples](https://github.com/firebase/quickstart-cpp) for
|
|
example usage.
|
|
- Invites: Firebase Invites is deprecated. Please refer to
|
|
https://firebase.google.com/docs/invites for details.
|
|
|
|
### 5.4.4
|
|
- Overview
|
|
- Fixed a bug in Cloud Functions on Android, and AdMob on iOS.
|
|
- Changes
|
|
- Cloud Functions (Android): Fixed an issue with error handling.
|
|
- AdMob (iOS): Fixed an issue with Rewarded Video ad unit string going out
|
|
of scope.
|
|
|
|
### 5.4.3
|
|
- Overview
|
|
- Bug fix for Firebase Storage on iOS.
|
|
- Changes
|
|
- Storage (iOS): Fixed an issue when downloading files with `GetBytes`.
|
|
|
|
### 5.4.2
|
|
- Overview
|
|
- Removed a spurious error message in Auth on Android.
|
|
- Changes
|
|
- Auth (Android): Removed an irrelevant error about the Java class
|
|
FirebaseAuthWebException.
|
|
|
|
### 5.4.0
|
|
- Overview
|
|
- Bug fix for link shortening in Dynamic Links and a known issue in Database
|
|
on Desktop.
|
|
- Changes
|
|
- Dynamic Links (Android): Fixed short link generation failing with
|
|
"error 8".
|
|
- Known Issues
|
|
- 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.
|
|
|
|
### 5.3.1
|
|
- Overview
|
|
- Updated iOS and Android dependency versions and a bug fix for Invites.
|
|
- Changes
|
|
- Invites (Android): Fixed an exception when the Android Minimum Version
|
|
code option is used on the Android.
|
|
|
|
### 5.3.0
|
|
- Overview
|
|
- Fixed bugs in Database and Functions; changed minimum Xcode version to
|
|
9.4.1.
|
|
- Changes
|
|
- General (iOS): Minimum Xcode version is now 9.4.1.
|
|
- Functions (Android): Fixed an issue when a function returns an array.
|
|
- Database (Desktop): Fixed issues in ChildListener.
|
|
- Database (Desktop): Fixed crash that can occur if Database is deleted
|
|
while asynchronous operations are still in progress.
|
|
- Known Issues
|
|
- Dynamic Links (Android): Shortening dynamic links fails with "Error 8".
|
|
|
|
### 5.2.1
|
|
- Overview
|
|
- Fixed bugs in Auth and Desktop.
|
|
- Changes
|
|
- Database (Desktop): Fixed support for `ChildListener` when used with
|
|
`Query::EqualTo()`, `Query::StartAt()`, `Query::EndAt()`,
|
|
`Query::LimitToFirst()` and `Query::LimitToLast()`.
|
|
- Database: Fixed a crash in DatabaseReference/Query copy assignment
|
|
operator and copy constructor.
|
|
- Auth, Database: Fixed a race condition returning Futures when calling
|
|
the same method twice in quick succession.
|
|
|
|
### 5.2.0
|
|
- Overview
|
|
- Changes to Database, Functions, Auth, and Messaging.
|
|
- Changes
|
|
- Database: Added a version of `GetInstance` that allows passing in the URL
|
|
of the database to use.
|
|
- Functions: Added a way to specify which region to run the function in.
|
|
- Messaging: Changed `Subscribe` and `Unsubscribe` to return a Future.
|
|
- Auth (Android): Fixed a crash in `User::UpdatePhoneNumberCredential()`.
|
|
- General (Android): Fixed a null reference in the Google Play Services
|
|
availability checker.
|
|
|
|
### 5.1.1
|
|
- Overview
|
|
- Updated Android and iOS dependency versions only.
|
|
|
|
### 5.1.0
|
|
- Overview
|
|
- Changes to Analytics, Auth, and Database; and added support for Cloud
|
|
Functions for Firebase.
|
|
- Changes
|
|
- Analytics: Added `ResetAnalyticsData()` to clear all analytics data
|
|
for an app from the device.
|
|
- Analytics: Added `GetAppInstanceId()` which allows developers to retrieve
|
|
the current app's analytics instance ID.
|
|
- Auth: Linking a credential with a provider that has already been linked
|
|
now produces an error.
|
|
- Auth (iOS): Fixed crashes in User::LinkAndRetrieveDataWithCredential() and
|
|
User::ReauthenticateAndRetrieveData().
|
|
- Auth (iOS): Fixed photo URL never returning a value on iOS.
|
|
- Auth (Android): Fixed setting profile photo URL with UpdateUserProfile.
|
|
- Database: Added support for ServerValues in SetPriority methods.
|
|
- Functions: Added support for Cloud Functions for Firebase on iOS, Android,
|
|
and desktop.
|
|
|
|
### 5.0.0
|
|
- Overview
|
|
- Renamed the Android and iOS libraries to include firebase in their name,
|
|
removed deprecated methods in App, AdMob, Auth, Database, and Storage,
|
|
and exposed new APIs in Dynamic Links and Invites.
|
|
- Changes
|
|
- General (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.
|
|
- General (Android): Improved error handling when device is out of space.
|
|
- App: Removed deprecated accessor methods from Future.
|
|
- AdMob: Removed deprecated accessor methods from BannerView and
|
|
InterstitialAd.
|
|
- Auth: Removed deprecated accessors from Auth, Credential, User,
|
|
and UserInfoInterface, including User::refresh_token().
|
|
- Database: Removed deprecated accessors from DatabaseReference, Query,
|
|
DataSnapshot, and MutableData.
|
|
- Dynamic Links: Added a field to received dynamic links describing the
|
|
strength of the match.
|
|
- 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.
|
|
- Storage: Removed deprecated accessors from StorageReference.
|
|
- Storage: Removed Metadata::download_url() and Metadata::download_urls().
|
|
Please use StorageReference::GetDownloadUrl() instead.
|
|
- Messaging: 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().
|
|
|
|
### 4.5.1
|
|
- Overview
|
|
- Fixed bugs in Database (Desktop) and Remote Config and exposed new APIs in
|
|
Auth on Desktop and Messaging.
|
|
- Changes
|
|
- Messaging: Added the SetAutoTokenRegistrationOnInitEnabled() and
|
|
IsAutoTokenRegistrationOnInitEnabled() methods to enable or disable
|
|
auto-token generation.
|
|
- Auth (Desktop): Added support for accessing user metadata.
|
|
- Database (Desktop): Fixed a bug to make creation of database instances
|
|
with invalid URLs return NULL.
|
|
- Database (Desktop): Fixed an issue where incorrect values could be passed
|
|
to OnChildAdded.
|
|
- Remote Config: Fixed a bug causing incorrect reporting of success or
|
|
failure during a Fetch().
|
|
|
|
### 4.5.0
|
|
- Overview
|
|
- Desktop workflow support for some features, Google Play Games
|
|
authentication on Android, and changes to AdMob, Auth, and Storage.
|
|
- Changes
|
|
- Auth, Realtime Database, Remote Config, Storage (Desktop): Stub
|
|
implementations have been replaced with functional desktop 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.
|
|
- Auth (Android): Added Google Play Games authentication.
|
|
- Auth: Fixed a race condition initializing/destroying Auth instances.
|
|
- Storage: Added MD5 hash to Metadata.
|
|
- Storage: Fixed a crash when deleting listeners and other object instances.
|
|
- Storage: Controller can now be used from any thread.
|
|
- Storage (iOS): Fixed incorrect content type when uploading.
|
|
- Known Issues
|
|
- When using Firebase Realtime Database on desktop, only one Transaction may
|
|
be run on a given subtree at the same time.
|
|
- When using Firebase Realtime Database on desktop, data persistence is not
|
|
available.
|
|
|
|
### 4.4.3
|
|
- Overview
|
|
- Fixed linking bug in App.
|
|
- Changes
|
|
- App (iOS): Removed unresolved symbols in the App library that could cause
|
|
errors when forcing resolution.
|
|
|
|
### 4.4.2
|
|
- Overview
|
|
- Fixed bugs in Dynamic Links, Invites, Remote Config and Storage and
|
|
fixed linking issues with the Windows and Linux stub libraries.
|
|
- Changes
|
|
- Dynamic Links (iOS): Now fetches the invite ID when using universal links.
|
|
- Dynamic Links (iOS): Fixed crash on failure of dynamic link completion.
|
|
- Dynamic Links (iOS): Fixed an issue where some errors weren't correctly
|
|
reported.
|
|
- Invites: Fixed SendInvite never completing in the stub implementation.
|
|
- Remote Config (iOS): Fixed an issue where some errors weren't correctly
|
|
reported.
|
|
- Storage: Fixed Metadata::content_language returning the wrong data.
|
|
- Storage (iOS): Reference paths formats are now consistent with other
|
|
platforms.
|
|
- Storage (iOS): Fixed an issue where trying to upload to a non-existent
|
|
path would not complete the Future.
|
|
- Storage (iOS): Fixed a crash when a download fails.
|
|
- General (Windows): Updated all static libs to suppport different C runtime
|
|
libraries and correspondingly updated the package directory structure.
|
|
- Linux: Fixed linking problems with all of the C++ stub libraries.
|
|
|
|
### 4.4.1
|
|
- Overview
|
|
- Bug fixes for Realtime Database and Instance ID.
|
|
- Changes
|
|
- 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.
|
|
|
|
### 4.4.0
|
|
- Overview
|
|
- Support for Instance ID.
|
|
- Changes
|
|
- Instance ID: Added Instance ID library.
|
|
|
|
### 4.3.0
|
|
- Overview
|
|
- Bug fix for Remote Config and a new feature for Auth.
|
|
- Changes
|
|
- Auth: Added support for accessing user metadata.
|
|
- Remote Config (Android): Fixed remote_config::ValueSource conversion.
|
|
|
|
### 4.2.0
|
|
- Overview
|
|
- Bug fixes for Analytics, Database, and Messaging; and updates for Auth and
|
|
Messaging.
|
|
- Changes
|
|
- Analytics (iOS): Fixed a bug which prevented the user ID and user
|
|
properties being cleared.
|
|
- Database (Android): Fixed MutableData::children_count().
|
|
- Messaging (Android): Fixed a bug which prevented the message ID field
|
|
being set.
|
|
- Auth: Failed operations now return more specific error codes.
|
|
- Auth (iOS): Phone Authentication no longer requires push notifications.
|
|
When push notifications aren't available, reCAPTCHA verification is used
|
|
instead.
|
|
- Messaging: Messages sent to users can now contain a link URL.
|
|
|
|
### 4.1.0
|
|
- Overview
|
|
- Bug fixes for AdMob, Auth, Messaging, Database, Storage, and Remote
|
|
Config, and added features for Future's OnCompletion callbacks and
|
|
Database transaction callbacks.
|
|
- Changes
|
|
- General: Futures are now invalidated when their underlying Firebase API is
|
|
destroyed.
|
|
- General: Added std::function support to Future::OnCompletion, to allow
|
|
use of C++11 lambdas with captures.
|
|
- AdMob (iOS): Fixed a crash if a BannerView is deleted while a call to
|
|
Destroy() is still pending.
|
|
- Auth (Android): Now assert fails if you call GetCredential without an Auth
|
|
instance created.
|
|
- Database: DataSnapshot, DatabaseReference, Query, and other objects are
|
|
invalidated when their Database instance is destroyed.
|
|
- Database: Added a context pointer to DatabaseReference::RunTransaction, as
|
|
well as std::function support to allow use of C++11 lambdas with captures.
|
|
- Messaging (Android): Fixed a bug where message_type was not set in the
|
|
Message struct.
|
|
- Messaging (iOS): Fixed a race condition if a message is received before
|
|
Firebase Cloud Messaging is initialized.
|
|
- Messaging (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.
|
|
- Storage: StorageReference objects are invalidated when their Storage
|
|
instance is destroyed.
|
|
- Known Issues
|
|
- When building on Android using STLPort, the std::function versions of
|
|
Future::OnCompletion and DatabaseReference::RunTransaction are not
|
|
available.
|
|
|
|
### 4.0.4
|
|
- Changes
|
|
- Messaging (Android): Fixed a bug resulting in Messages not having their
|
|
message_type field populated.
|
|
|
|
### 4.0.3
|
|
- Overview
|
|
- Bug fixes for Dynamic Links, Messaging and iOS SDK compatibility.
|
|
- Changes
|
|
- General (iOS): Fixed an issue which resulted in custom options not being
|
|
applied to firebase::App instances.
|
|
- General (iOS): Fixed a bug which caused method implementation look ups
|
|
to fail when other iOS SDKs rename the selectors of swizzled methods.
|
|
- Dynamic Links (Android): Fixed future completion if short link
|
|
creation fails.
|
|
- Messaging (iOS): Fixed message handling when messages they are received
|
|
via the direct channel to the FCM backend (i.e not via APNS).
|
|
|
|
### 4.0.2
|
|
- Overview
|
|
- Bug fixes for Analytics, Auth, Dynamic Links, and Messaging.
|
|
- Changes
|
|
- Analytics (Android): Fix SetCurrentScreen to work from any thread.
|
|
- Auth (iOS): Fixed user being invalidated when linking a credential fails.
|
|
- Dynamic Links: Fixed an issue which caused an app to crash or not receive
|
|
a Dynamic Link if the link is opened when the app is installed and not
|
|
running.
|
|
- Messaging (iOS): Fixed a crash when no Listener is set.
|
|
- Messaging: Fixed Listener::OnTokenReceived occasionally being called twice
|
|
with the same token.
|
|
|
|
### 4.0.1
|
|
- Overview
|
|
- Bug fixes for Dynamic links and Invites on iOS and Cloud Messaging on
|
|
Android and iOS.
|
|
- Changes
|
|
- Cloud Messaging (Android): Fixed an issue where Terminate was not
|
|
correctly shutting down the Cloud Messaging library.
|
|
- Cloud Messaging (iOS): Fixed an issue where library would crash on start
|
|
up if there was no registration token.
|
|
- Dynamic Links & Invites (iOS): Fixed an issue that resulted in apps not
|
|
receiving a link when opening a link if the app is installed and not
|
|
running.
|
|
|
|
### 4.0.0
|
|
- Overview
|
|
- Added support for phone number authentication, access to user metadata,
|
|
a standalone dynamic library and bug fixes.
|
|
- Changes
|
|
- Auth: Added support for phone number authentication.
|
|
- Auth: Added the ability to retrieve user metadata.
|
|
- Auth: Moved token notification to a separate listener object.
|
|
- Dynamic Links: 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.
|
|
- Messaging (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.
|
|
- Messaging (iOS): Fixed interoperation with other users of local
|
|
notifications.
|
|
- General (Android): Fixed crash in some circumstances after resolving
|
|
dependencies by updating Google Play services.
|
|
|
|
### 3.1.2
|
|
- Overview
|
|
- Bug fixes for Auth.
|
|
- Changes
|
|
- Auth: 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.
|
|
- Auth: Fixed potential memory corruption when AuthStateListener is
|
|
destroyed.
|
|
### 3.1.1
|
|
- Overview
|
|
- Bug fixes for Auth, Invites, Messaging, and Storage, plus a general fix.
|
|
- Changes
|
|
- General (Android): Fixed Google Play Services updater crash when clicking
|
|
outside of the dialog on Android 4.x devices.
|
|
- Auth: Fixed user being invalidated when linking a credential fails.
|
|
- Auth: Deprecated User::refresh_token().
|
|
- Messaging: Fixed incorrectly notifying the app of a message when a
|
|
notification is received while the app is in the background and the app
|
|
is then opened by via the app icon rather than the notification.
|
|
- Invites (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 a bug that prevented the construction of Metadata without
|
|
a storage reference.
|
|
|
|
### 3.1.0
|
|
- Overview
|
|
- Added support for multiple storage buckets in Cloud Storage for Firebase,
|
|
and fixed a bug in Invites.
|
|
- Changes
|
|
- Storage: Renamed "Firebase Storage" to "Cloud Storage for Firebase".
|
|
- 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 invites with empty links would
|
|
fail to be received.
|
|
|
|
### 3.0.0
|
|
- Overview
|
|
- Renamed some methods, fixed some bugs, and added some features.
|
|
- Changes
|
|
- General: 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()`.
|
|
- Auth: Fixed a race condition accessing user data in callbacks.
|
|
- Auth: (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).
|
|
- Messaging: Added a field to `firebase::messaging::Message` specifying
|
|
whether the message was received when the app was in the background.
|
|
- Messaging: (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.
|
|
- Messaging: (iOS) Fixed regression since 2.1.1 that broke messaging
|
|
on iOS 8 & 9 when an AppDelegate did not implement remote notification
|
|
methods.
|
|
- Invites: (iOS) Fixed regression since 2.1.1 that broke invites if the
|
|
AppDelegate did not implement the open URL method.
|
|
- Remote Config: Added support for initializing Remote Config defaults
|
|
from `firebase::Variant` values, including binary data.
|
|
|
|
### 2.1.3
|
|
- Overview
|
|
- Bug fixes for Auth and Messaging, and a fix for Future callbacks.
|
|
- Changes
|
|
- General: Fixed a potential deadlock when running callbacks registered via
|
|
`firebase::Future::OnCompletion()`.
|
|
- Auth: (Android) Fixed an error in `firebase::auth::User::PhotoUri()`.
|
|
- Messaging: (Android) Fixed an issue where a blank message would appear.
|
|
- Messaging: (iOS) Removed hard dependency on Xcode 8.
|
|
|
|
### 2.1.2
|
|
- Overview
|
|
- Bug fix for AdMob on Android.
|
|
- Changes
|
|
- AdMob: (Android) Fixed an issue in `firebase::admob::InterstitialAd` that
|
|
caused a crash after displaying multiple interstitial ads.
|
|
|
|
### 2.1.1
|
|
- Overview
|
|
- Bug fixes for Firebase Authentication, Messaging and Invites.
|
|
- Changes
|
|
- Auth: (Android) Fixed an issue that caused a future to never complete
|
|
when signing in while a user is already signed in.
|
|
- Messaging / Invites: (iOS) Fixed an issue with method swizzling that
|
|
caused some of the application's UIApplicationDelegate methods to not
|
|
be called.
|
|
- Messaging: (iOS) Fixed a bug which caused a crash when initializing the
|
|
library when building with Xcode 8 for iOS 10.
|
|
|
|
### 2.1.0
|
|
- Overview
|
|
- Support for Firebase Storage and minor bugfixes in other libraries.
|
|
- Changes
|
|
- Storage: Added the Firebase Storage C++ client library.
|
|
- Auth: Added a check for saved user credentials when Auth is initialized.
|
|
- Known Issues
|
|
- Storage: On Android, pausing and resuming storage operations will cause
|
|
the transfer to fail with the error code kErrorUnknown.
|
|
|
|
### 2.0.0
|
|
- Overview
|
|
- Support for AdMob Native Express Ads, Realtime Database and simplified
|
|
the Invites API.
|
|
- Changes
|
|
- AdMob: Added support for AdMob Native Express Ads.
|
|
- Auth: Added AuthStateListener class which provides notifications when a
|
|
user is logged in or logged out.
|
|
- Realtime Database: Added a client library.
|
|
- Invites: Breaking change which significantly simplifies the API.
|
|
- Known Issues
|
|
- AdMob: When calling Initialize, the optional admob_app_id argument is
|
|
ignored.
|
|
|
|
### 1.2.1
|
|
- Overview
|
|
- Bug fixes in Messaging.
|
|
- Changes
|
|
- Messaging: Fixed a bug that prevented Android apps from terminating
|
|
properly.
|
|
- Messaging: Added missing copy constructor implementation in iOS and stub
|
|
libraries.
|
|
|
|
### 1.2.0
|
|
- Overview
|
|
- New features in AdMob, Authentication, Messaging, and Remote Config, a
|
|
helper class for initialization, and bug fixes.
|
|
- Changes
|
|
- General: Added firebase::ModuleInitializer, a helper class to initialize
|
|
Firebase modules and handle any missing dependency on Google Play services
|
|
on Android.
|
|
- AdMob: Added Rewarded Video feature. For more information, see the
|
|
[Rewarded Video C++ guide](https://firebase.google.com/docs/admob/cpp/rewarded-video).
|
|
- AdMob: You can now pass your AdMob App ID to firebase::admob::Initialize()
|
|
to help reduce latency for the initial ad request.
|
|
- AdMob: On both iOS and Android, you must call BannerView::Show() to
|
|
display the ad. Previously, this was only required on Android.
|
|
- AdMob: Fixed an issue where BannerView::Listener received an incorrect
|
|
bounding box.
|
|
- AdMob: BannerView now has a black background, rather than transparent.
|
|
- Authentication: Implemented User::SendEmailVerification() and
|
|
User::EmailVerified() methods on Android.
|
|
- Invites: Fixed a bug that occurred when initializing InvitesSender and
|
|
InvitesReceiver at the same time.
|
|
- Invites: Fixed a potential crash at app shutdown on iOS when
|
|
InvitesReceiver::Fetch() is pending.
|
|
- Messaging: Added firebase::messaging::Notification and associated methods
|
|
for retrieving the contents of a notification on Android and iOS.
|
|
- Messaging: Added support for iOS 10 notifications.
|
|
- Messaging: Fixed a crash that occurred on Android if Messaging was
|
|
initialized before the native library was loaded.
|
|
- RemoteConfig: Added GetKeys() and GetKeysByPrefix() methods, which get a
|
|
list of the app's Remote Config parameter keys.
|
|
|
|
### 1.1.0
|
|
- Overview
|
|
- Minor bug fixes and new way of checking Google Play services availability.
|
|
- Changes
|
|
- Reverted the firebase::App changes from version 1.0.1 relating to Google
|
|
Play services; this has been replaced with a new API.
|
|
- Each Firebase C++ library that requires Google Play services now checks
|
|
for its availability at initialization time. See "Requiring Google Play
|
|
services on Android".
|
|
- firebase::auth::GetAuth() now has an optional output parameter that
|
|
indicates whether initialization was successful, and will return
|
|
nullptr if not.
|
|
- firebase::messaging::Initialize() now returns a result that indicates
|
|
whether initialization was successful.
|
|
- 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.
|
|
- firebase::remote_config::Initialize() now returns a result that
|
|
indicates whether initialization was successful.
|
|
- firebase::admob::Initialize() now returns a result that indicates
|
|
whether initialization was successful.
|
|
- Added utility functions to check whether Google Play services is
|
|
available. See google_play_services::CheckAvailability() and
|
|
google_play_services::MakeAvailable() for more information.
|
|
- Known Issues
|
|
- Invites: If you call InvitesReceiver::Fetch() or
|
|
InvitesReceiver::ConvertInvitation() without first calling
|
|
firebase::invites::Initialize(), the operation will never complete. To
|
|
work around the issue, ensure that firebase::invites::Initialize() is
|
|
called once before creating any InvitesReceiver instances.
|
|
|
|
### 1.0.1
|
|
- Overview
|
|
- Minor bug fixes.
|
|
- Changes
|
|
- Modified firebase::App to check for the required version of Google Play
|
|
services on creation to prevent firebase::App creation 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. See
|
|
"Requiring Google Play services on Android". With the previous version
|
|
(version 1.0.0) the developer needed to manually check for an up to date
|
|
Google Play services using GoogleApiClient.
|
|
- Fixed potential deadlock when using SetListener from a notification
|
|
callback in firebase::admob::InterstitialAd and
|
|
firebase::admob::BannerView on iOS.
|
|
- Fixed race condition on destruction of admob::BannerView on Android.
|
|
- Fixed Future handle leak. An internal memory leak would manifest for
|
|
objects or modules that use futures for the lifetime of the object or
|
|
module. For example, during the lifetime of BannerView each call to a
|
|
method which returns a Future could potentially allocate memory which
|
|
wouldn't be reclaimed until the BannerView is destroyed.
|
|
|
|
### 1.0.0
|
|
- Overview
|
|
- First public release.
|
|
See our [setup guide](https://firebase.google.com/docs/cpp/setup) to get
|
|
started.
|
|
- Known Issues
|
|
- Android armeabi libraries must be linked with gcc 4.8.
|