将 Firebase 添加到您的 C++ 项目plat_iosplat_androidplat_cpp

关于 Firebase C++ SDK

Firebase C++ SDK 在适用于 iOS 和 Android 的 Firebase 的基础上提供了 C++ 接口。

完全利用 C++ 代码访问 Firebase,无需编写任何 Java 代码(适用于 Android)或 Objective-C/Swift 代码(适用于 iOS)。该 SDK 还将 Firebase 使用的许多专门针对特定编程语言的习语转译成了 C++ 开发人员更为熟悉的接口。为了说明将 Firebase 集成到您的 C++ 游戏中有多么容易,我们制作了一款示例应用 Zooshi,您可以从 GitHub 下载这款应用。

下载 SDK

Zooshi (GitHub)


如需详细了解如何推动您的游戏的发展,请访问我们的 Firebase 游戏页面

特点

Firebase C++ SDK 在 iOS 和 Android 平台上支持以下功能:

功能
应用(基本库) libfirebase_app.a
AdMob libfirebase_admob.a
Analytics libfirebase_analytics.a
身份验证 libfirebase_auth.a
实时数据库 libfirebase_database.a
动态链接 libfirebase_dynamic_links.a
Cloud Functions libfirebase_functions.a
邀请 libinvites.a
云消息传递 libfirebase_messaging.a
远程配置 libfirebase_remote_config.a
Cloud Storage libfirebase_storage.a

Firebase C++ SDK 还包含对部分功能的桌面工作流支持,因此支持在 Windows、OS X 和 Linux 上使用 Firebase 的某些功能。测试版

针对 iOS 进行设置

前提条件

  • Xcode 9.4.1 或更高版本。
  • 针对云消息传递:
    • 一台 iOS 真机设备
    • 已启用推送通知功能的 APN 证书

在 Firebase 控制台中设置您的应用

现在需要将 Firebase 添加至您的应用。要执行此操作,您需要有一个 Firebase 项目和适用于您的应用的 Firebase 配置文件。

要创建 Firebase 项目,请执行以下操作:

  1. 访问 Firebase 控制台

  2. 点击添加项目,然后选择或输入项目名称

    • 如果您已经拥有一个与应用关联的 Google 项目,请从项目名称下拉菜单中选择该项目。
    • 如果您尚未创建 Google 项目,请输入新的项目名称
  3. (可选)修改项目 ID

    Firebase 会自动为您的 Firebase 项目分配一个独一无二的 ID。此 ID 会显示在公众可见的 Firebase 服务中,例如:

    • 默认实时数据库网址:your-project-id.firebaseio.com
    • 默认 Cloud Storage 存储分区名称:your-project-id.appspot.com
    • 默认托管子网域:your-project-id.firebaseapp.com
  4. 在 Firebase 控制台中完成剩下的设置步骤,然后点击创建项目(如果您使用的是现有 Google 项目,则点击添加 Firebase)。

Firebase 会自动为您的 Firebase 项目预配资源。此过程通常需要几分钟。完成此过程后,您将进入 Firebase 控制台中 Firebase 项目的概览页面。

创建项目之后,您就可以向其中添加 iOS 应用了:

  1. 点击将 Firebase 添加到您的 iOS 应用,然后按设置步骤操作。如果您是导入现有 Google 项目,系统可能会自动执行这些操作,您只需下载配置文件即可。

  2. 看到提示时,输入应用的软件包 ID。请务必输入应用在使用的软件包 ID;只有在将应用添加到 Firebase 项目时您才能进行此设置。

  3. 将 Firebase iOS 配置文件添加到您的应用:

    1. 点击下载 GoogleService-Info.plist 以获取 Firebase iOS 配置文件 (GoogleService-Info.plist)。

      您可以随时再次下载 Firebase iOS 配置文件

    2. 将配置文件移至 Xcode 项目的根目录中。如果出现提示,请选择将配置文件添加至所有目标。

  4. 添加初始化代码后,运行您的应用以便向 Firebase 控制台发送验证信息,证明您已成功安装 Firebase。

将 Firebase C++ SDK 添加到您的应用

  1. 下载 Firebase C++ SDK,并将其解压缩到合适的位置。

  2. 将 SDK 中已下载的框架添加到您的 Xcode 项目。请注意,您只需要纳入 Firebase 基本框架,以及与您要使用的服务对应的框架(请参阅下方的依赖项部分)。最简单的方法通常是将这些框架从 Finder 窗口直接拖动到 Xcode 中的项目导航窗格(默认情况下为最左侧窗格,可点击左上角的文件图标)。请确保将框架添加到您的项目,而不是 Pods 项目!

  3. 构建您的应用。现在 Firebase 代码应可正确编译和链接了。操作完成!

依赖项

Firebase 功能具有不同的依赖项。请务必将下述所有需要的依赖项添加到您的项目和 Podfile 中。

Firebase

firebase.framework
pod 'Firebase/Core', '5.14.0'
Analytics

firebase.framework
firebase_analytics.framework
pod 'Firebase/Core', '5.14.0'
AdMob

firebase.framework
firebase_admob.framework
pod 'Firebase/Core', '5.14.0'
pod 'Firebase/AdMob', '5.14.0'
云消息传递

firebase.framework
firebase_messaging.framework
pod 'Firebase/Core', '5.14.0'
pod 'Firebase/Messaging', '5.14.0'
身份验证

firebase.framework
firebase_auth.framework
pod 'Firebase/Core', '5.14.0'
pod 'Firebase/Auth', '5.14.0'
实时数据库

firebase.framework
firebase_database.framework
pod 'Firebase/Core', '5.14.0'
pod 'Firebase/Database', '5.14.0'
Cloud Functions

firebase.framework
firebase_functions.framework
pod 'Firebase/Core', '5.14.0'
pod 'Firebase/Functions', '5.14.0'
动态链接

firebase.framework
firebase_dynamic_links.framework
pod 'Firebase/Core', '5.14.0'
pod 'Firebase/DynamicLinks', '5.14.0'
邀请

firebase.framework
firebase_invites.framework
pod 'Firebase/Core', '5.14.0'
pod 'Firebase/Invites', '5.14.0'
远程配置

firebase.framework
firebase_remote_config.framework
pod 'Firebase/Core', '5.14.0'
pod 'Firebase/RemoteConfig', '5.14.0'
存储

firebase.framework
firebase_storage.framework
pod 'Firebase/Core', '5.14.0'
pod 'Firebase/Storage', '5.14.0'

方法调配

在 iOS 中,某些应用事件(如打开网址和接收通知)要求您的应用委托实现特定的方法。例如,接收通知可能需要您的应用委托实现 application:didReceiveRemoteNotification:。因为每个 iOS 应用都有各自的应用委托,Firebase 可以使用“方法调配”(method swizzling) 替换采用不同的方法,在您可能已实现的处理程序外,附加自己的处理程序。

Firebase 邀请、动态链接和云消息传递库需要使用方法调配将处理程序附加至应用委托。如果您使用了这些库中的任何库,在加载时,Firebase 将识别您的 AppDelegate 类并为其调配必要的方法,将回调链接至您现有的方法实现。

针对 Android 进行设置

前提条件

在 Firebase 控制台中设置您的应用

现在需要将 Firebase 添加至您的应用。要执行此操作,您需要有一个 Firebase 项目和适用于您的应用的 Firebase 配置文件。

要创建 Firebase 项目,请执行以下操作:

  1. 访问 Firebase 控制台

  2. 点击添加项目,然后选择或输入项目名称

    • 如果您已经拥有一个与应用关联的 Google 项目,请从项目名称下拉菜单中选择该项目。
    • 如果您尚未创建 Google 项目,请输入新的项目名称
  3. (可选)修改项目 ID

    Firebase 会自动为您的 Firebase 项目分配一个独一无二的 ID。此 ID 会显示在公众可见的 Firebase 服务中,例如:

    • 默认实时数据库网址:your-project-id.firebaseio.com
    • 默认 Cloud Storage 存储分区名称:your-project-id.appspot.com
    • 默认托管子网域:your-project-id.firebaseapp.com
  4. 在 Firebase 控制台中完成剩下的设置步骤,然后点击创建项目(如果您使用的是现有 Google 项目,则点击添加 Firebase)。

Firebase 会自动为您的 Firebase 项目预配资源。此过程通常需要几分钟。完成此过程后,您将进入 Firebase 控制台中 Firebase 项目的概览页面。

创建项目之后,您就可以向其中添加 Android 应用了:

  1. 点击将 Firebase 添加到您的 Android 应用,然后按设置步骤操作。如果您是导入现有 Google 项目,系统可能会自动执行这些操作,您只需下载配置文件即可。

  2. 出现提示时,输入应用的软件包名称。请务必输入应用使用的软件包名称;只有在将应用添加到 Firebase 项目时您才能进行此设置。

  3. 将 Firebase Android 配置文件添加到您的应用:

    1. 点击下载 google-services.json 以获取 Firebase Android 配置文件 (google-services.json)。

      您可以随时再次下载 Firebase Android 配置文件

    2. 将配置文件移动到与根级 build.gradle 文件相同的目录中。

  4. 添加初始化代码后,运行您的应用以便向 Firebase 控制台发送验证信息,证明您已成功安装 Firebase。

将 Firebase C++ SDK 添加到您的应用

  1. 下载 Firebase C++ SDK,并将其解压缩到合适的位置。

  2. 将 Firebase C++ SDK 的位置添加至您的 gradle.properties 文件:

    systemProp.firebase_cpp_sdk.dir=~/your_local_firebase_sdk_dir
    
  3. 将 Android NDK 的位置添加至您的 local.properties 文件:

    ndk.dir=~/your_local_ndk_dir
    
  4. 将任意依赖项添加至您的 app/build.gradle 文件。(请参阅依赖项部分了解详情。)

  5. 现在可以从 Android Studio 运行 build.gradle,借助 Firebase 的支持来构建您的项目了。操作完成!

依赖项

Firebase 功能具有不同的依赖项。将下述所有需要的依赖项添加到您的 app/build.gradle 文件的依赖项部分。

Analytics

libfirebase_analytics.a
libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.5'
implementation 'com.google.firebase:firebase-analytics:16.0.5'
implementation 'com.google.android.gms:play-services-base:16.0.1'
AdMob

libfirebase_admob.a
libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.5'
implementation 'com.google.firebase:firebase-ads:17.1.1'
云消息传递

libfirebase_messaging.a
libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.5'
implementation 'com.google.firebase:firebase-messaging:17.3.4'
implementation 'com.google.android.gms:play-services-base:16.0.1'
身份验证

libfirebase_auth.a
libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.5'
implementation 'com.google.firebase:firebase-auth:16.0.5'
implementation 'com.google.android.gms:play-services-base:16.0.1'
实时数据库

libfirebase_database.a
libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.5'
implementation 'com.google.firebase:firebase-database:16.0.5'
implementation 'com.google.android.gms:play-services-base:16.0.1'
Cloud Functions

libfirebase_functions.a
libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.5'
implementation 'com.google.firebase:firebase-functions:16.1.3'
implementation 'com.google.android.gms:play-services-base:16.0.1'
动态链接

libfirebase_dynamic_links.a
libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.5'
implementation 'com.google.firebase:firebase-invites:16.0.5'
implementation 'com.google.android.gms:play-services-base:16.0.1'
邀请

libfirebase_invites.a
libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.5'
implementation 'com.google.firebase:firebase-invites:16.0.5'
implementation 'com.google.android.gms:play-services-base:16.0.1'
远程配置

libfirebase_remote_config.a
libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.5'
implementation 'com.google.firebase:firebase-config:16.1.0'
implementation 'com.google.android.gms:play-services-base:16.0.1'
存储

libfirebase_storage.a
libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.5'
implementation 'com.google.firebase:firebase-storage:16.0.5'
implementation 'com.google.android.gms:play-services-base:16.0.1'

其他信息

自定义构建系统

我们目前提供的 generate_xml_from_google_services_json.py 可用于将 google-services.json 转换为要纳入到应用中的 .xml 资源。此脚本执行的转换与 Google Play 服务 Gradle 插件在构建 Android 应用时执行的转换相同。不使用 Gradle(例如:ndk-build、makefiles、Visual Studio 等)的用户可使用此脚本自动生成字符串资源。

ProGuard

多种 Android 构建系统对处于“发行”模式的版本使用 ProGuard,以压缩应用大小和保护 Java 源代码。如果您使用 ProGuard,则需要将与您使用的 Firebase C++ 库对应的 libs/android/*.pro 文件添加到您的 ProGuard 配置。

例如,使用 Gradle 时,build.gradle 将包含:

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.]
    }
  }
}

需要使用 Google Play 服务

多个 Firebase C++ 库需要在用户的 Andoid 设备上使用 Google Play 服务。如果 Firebase C++ 库在初始化时返回 kInitResultFailedMissingDependency,则表明 Google Play 服务在设备上不可用(设备需要更新、重新激活、解决权限问题等),在解决相关问题之前,您无法使用 Firebase 库。

您可以使用 google_play_services/availability.h 中的函数来找出 Google Play 服务不可用的原因(并尝试修复)。

Firebase C++ 库 是否需要 Google Play 服务?
Analytics 不需要
AdMob 不需要(通常情况下)
云消息传递 需要
身份验证 需要
动态链接 需要
邀请 需要
远程配置 需要
实时数据库 需要
Cloud Functions 需要
存储 需要

关于 AdMob 和 Google Play 服务的说明

适用于 Andoid 的 Google 移动广告 SDK 的大部分版本都可以在没有 Google Play 服务的情况下正常工作。但是,如果您使用的是 com.google.android.gms:play-services-ads-lite 依赖项,而非上文列出的标准 com.google.firebase:firebase-ads 依赖项,在这种情况下,您必须使用 Google Play 服务。

如果 Google Play 服务不可用您使用的是 com.google.android.gms:play-services-ads-lite,AdMob 初始化将仅返回 kInitResultFailedMissingDependency

桌面工作流实现(测试版功能)

在构建应用时,建议在开发时先在桌面平台上测试您的应用,然后再在设备上进行部署和测试,因为这样往往更轻松。为了支持这种工作流,我们提供了一部分 Firebase C++ SDK 来支持桌面平台:

支持桌面设备的功能
Firebase 核心库 libfirebase_app.a
身份验证 libfirebase_auth.a
实时数据库 libfirebase_database.a
Cloud Functions libfirebase_functions.a
远程配置 libfirebase_remote_config.a
Cloud Storage libfirebase_storage.a

其余的桌面库是 Stub(非函数)实现,我们提供这些实现以方便针对 Windows、OS X 和 Linux 进行编译,让您不必在也定位至桌面平台时专门编译代码。

桌面项目设置

要使用桌面工作流支持,您必须在 Firebase 控制台中设置 Android 或 iOS 项目。

如果您有 Android 项目,只需在桌面设备上使用 google-services.json 文件。

如果您有 iOS 项目并且不希望创建 Android 项目,则可以使用包含的 Python 脚本 generate_xml_from_google_services_json.py --plist 将您的 GoogleService-Info.plist 文件转换为 google-services-desktop.json 文件。

默认情况下,当您的应用初始化时,Firebase 将在当前目录中查找名为 google-services.jsongoogle-services-desktop.json 的文件。请确保存在其中至少一个文件,或在初始化 Firebase 之前调用 AppOptions::LoadFromJsonConfig(),以直接指定您的 JSON 配置数据。

Windows 库

对于 Windows,系统会根据您的项目是以 32 位 (x86) 还是 64 位 (x64) 模式构建的、您使用的 Windows 运行时环境(Multithreaded /MT 或 Multithreaded DLL /MD)以及您定位的是发布版本还是调试版本来提供库版本。

提供的库已使用 Visual Studio 2015 和 2017 进行了测试。在 Windows 上构建 C++ 桌面应用时,您需要链接以下 Windows SDK 库(请参阅您的编译器文档了解详情):

Firebase C++ 库 Windows SDK 库依赖项
身份验证 advapi32, ws2_32, crypt32
实时数据库 advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv
Cloud Functions advapi32, ws2_32, crypt32
远程配置 advapi32, ws2_32, crypt32
存储 advapi32, ws2_32, crypt32

OS X 库

对于 OS X (Darwin),我们仅为 64 位 (x86_64) 平台提供了库版本。我们还提供了框架,以方便您参考。

提供的库已使用 Xcode 8.3.3 和 9.2 进行了测试。在 OS X 上构建 C++ 桌面应用时,您需要链接 pthread 系统库以及 CoreFoundationSecurity OS X 系统框架(请参阅您的编译器文档了解详情):

Linux 库

对于 Linux,我们为 32 位 (i386) 和 64 位 (x86_64) 平台提供了库版本。

提供的库已在 Ubuntu 上使用 GCC 4.8.0、GCC 7.2.0 和 Clang 5.0 进行了测试。在 Linux 上构建 C++ 桌面应用时,您需要关联 pthread 系统库(如需了解详情,请参阅您的编译器文档)。使用 GCC 5 或更高版本构建时,您需要定义 -D_GLIBCXX_USE_CXX11_ABI=0

关于 Firebase C++ 桌面支持的说明

Firebase C++ SDK 桌面支持是一项测试版功能,仅适用于在应用开发过程中使用的工作流,而不适用于公开发布代码。

实时数据库桌面

实时数据库桌面 SDK 使用 REST 访问您的数据库。因此,您必须在桌面上使用 Query::OrderByChild() 声明您使用的索引,否则您的侦听器将会失败。

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面