ไปที่คอนโซล

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

Firebase C++ SDK 为您的 C++ 游戏提供强力支持。Firebase C++ SDK 在适用于 iOS 和 Android 的 Firebase 的基础上提供了 C++ 接口。

完全利用 C++ 代码访问 Firebase,无需编写任何平台原生代码。Firebase SDK 还将 Firebase 使用的许多编程语言所特有的习语转译为 C++ 开发人员更为熟悉的接口。

如需详细了解如何使用 Firebase 为您的游戏提供强力支持,请访问我们的 Firebase 游戏页面

iOS

Android

第 1 步:设置环境

iOS

  • 安装 Xcode 9.4.1 或更高版本。

  • 安装 CocoaPods 1.4.0 或更高版本。

  • 在 Xcode 中打开您的 C++ 项目。

    • 您的应用必须适用于 iOS 8 或更高版本。
  • 设置用于运行您应用的设备或模拟器。

    • 为了支持云消息传递,您需要:
      • 一台 iOS 真机
      • 已启用推送通知功能的 APN 证书
  • 使用您的 Google 帐号登录 Firebase

Android

  • 获取 Android SDK

  • 安装您的首选编辑器或 IDE,例如 Android Studio、IntelliJ 或 VS Code。

  • 在您的首选编辑器或 IDE 中打开 C++ 项目。

  • 设置用于运行您应用的设备或模拟器。

    • 模拟器必须使用具有 Google Play 的模拟器映像。

    • 对于某些 C++ 库,客户端设备上必须安装 Google Play 服务;请查看本页中的列表

  • 使用您的 Google 帐号登录 Firebase

第 2 步:创建 Firebase 项目

您需要先创建一个要关联到 C++ 项目的 Firebase 项目,然后才能将该 Firebase 添加到 C++ 项目。访问了解 Firebase 项目以详细了解 Firebase 项目。

第 3 步:在 Firebase 中注册您的应用

iOS

您可以注册一款(或多款)应用以与您的 Firebase 项目关联。

访问了解 Firebase 项目以详细了解将应用添加到 Firebase 项目的最佳做法和注意事项,包括如何处理多个应用版本。

  1. Firebase 控制台的项目概览页面的中心位置,点击 iOS 图标以启动设置工作流。

    如果您已向 Firebase 项目添加了应用,请点击添加应用以显示平台选项。

  2. iOS 软件包 ID 字段中输入应用的软件包 ID

    • 从您在 XCode 中打开的项目中查找此软件包 ID。在左侧的项目导航器中选择顶级应用,然后访问常规标签页。软件包标识符的值是 iOS 软件包 ID(例如 com.yourcompany.ios-app-name)。
  3. (可选)根据设置工作流的提示输入其他应用信息。

    昵称是方便内部使用的标识符,只有您能在 Firebase 控制台中看到。

  4. 点击注册应用

Android

您可以注册一款(或多款)应用以与您的 Firebase 项目关联。

访问了解 Firebase 项目以详细了解将应用添加到 Firebase 项目的最佳做法和注意事项,包括如何处理多个应用版本。

  1. Firebase 控制台的项目概览页面的中心位置,点击 Android 图标以启动设置工作流。

    如果您已向 Firebase 项目添加了应用,请点击添加应用以显示平台选项。

  2. Android 软件包名称字段中输入您的应用 ID

    • “应用 ID”有时被称为“软件包名称”

    • 在您的模块(应用级)Gradle 文件(通常是 app/build.gradle)中找到此应用 ID(如 ID:com.yourcompany.yourproject)。

  3. (可选)根据设置工作流的提示输入其他应用信息。

    昵称是方便内部使用的标识符,只有您能在 Firebase 控制台中看到。

  4. 点击注册应用

第 4 步:添加 Firebase 配置文件

iOS

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

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

  2. 在 IDE 中打开您的 C++ 项目,然后将配置文件拖到 C++ 项目的根目录中。

  3. 如果出现提示,请选择将配置文件添加到所有目标。

  4. 您已完成在 Firebase 控制台中的设置任务。请继续执行下面的步骤,来添加 Firebase C++ SDK

Android

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

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

  2. 在 IDE 中打开您的 C++ 项目,然后将配置文件添加到您的项目中:

  3. (仅限 Gradle 构建)要在 C++ 项目中启用 Firebase 服务,请将 Google 服务插件添加到顶级 build.gradle 文件中。

    1. 添加规则以包含 Google 服务插件。确认您是否还拥有 Google 的 Maven 代码库。

      buildscript {
        // ...
        dependencies {
          // ...
          // Add the following line:
          classpath 'com.google.gms:google-services:4.2.0'  // Google Services plugin
        }
      }
      
      allprojects {
        // ...
        repositories {
          // Check that you have the following line (if not, add it):
          google()  // Google's Maven repository
          // ...
        }
      }
      
    2. 将下行添加到文件末尾。

      apply plugin: 'com.android.application'
      
      android {
        // ...
      }
      
      // Add the following line to the bottom of the file:
      apply plugin: 'com.google.gms.google-services'  // Google Play services Gradle plugin
      
  4. 您已完成在 Firebase 控制台中的设置任务。请继续执行下面的步骤,来添加 Firebase C++ SDK

第 5 步:添加 Firebase C++ SDK

iOS

本部分中的步骤示范了如何将受支持的 Firebase 产品添加到 Firebase C++ 项目。在此示例中,我们将完成 Google Analytics for Firebase 添加操作。

将 Google Analytics for Firebase 添加到 C++ 项目为可选操作,但若要验证 Firebase 与您的应用能否正常配合使用,则这是一种相对简单的方法。此外,Analytics 在开发和调试过程中也都非常有用,并有助于跟踪生产应用是否成功。

  1. 下载 Firebase C++ SDK,然后将 SDK 解压缩到方便的位置。

    Firebase C++ SDK 并非平台特定,但包含平台专用库。

  2. 从解压缩的 SDK 添加 Firebase Pod

    1. 如果您没有 Podfile,请创建一个:

      cd your-app-directory
      pod init

    2. 将要使用的每个 Firebase 产品的 Pod 添加到 Podfile 中。对于 Analytics,请运行:

      pod 'Firebase/Core', '5.12.0'

    3. 安装 Pod,然后在 Xcode 中打开 .xcworkspace 文件。

      pod install
      open your-app.xcworkspace

  3. 从解压缩的 SDK 添加 Firebase 框架

    要添加这些框架,最简单方法通常是将它们从 Finder 窗口直接拖动到 Xcode 的项目导航窗格(默认情况下为最左侧窗格;或点击 Xcode 左上角的文件图标)中。

    1. 添加核心 Firebase 框架 (firebase.framework),此为使用任何 Firebase 产品的必要条件。

    2. 为您要使用的每个 Firebase 产品添加框架。对于 Analytics,请添加 firebase_analytics.framework

  4. 返回 Firebase 控制台,在设置工作流中,点击下一步

  5. 运行您的应用,向 Firebase 发送您已成功集成 Firebase 的验证信息。

    您的设备日志将显示说明初始化已完成的 Firebase 验证信息。如果您是在具有网络访问权限的模拟器上运行应用,则 Firebase 控制台会通知您应用连接已完成。

大功告成!您的 C++ 应用现已注册,并配置为使用 Firebase 产品。

Android

本部分中的步骤示范了如何将受支持的 Firebase 产品添加到 Firebase C++ 项目。在此示例中,我们将完成 Google Analytics for Firebase 添加操作。

将 Google Analytics for Firebase 添加到 C++ 项目为可选操作,但若要验证 Firebase 与您的应用能否正常配合使用,则这是一种相对简单的方法。此外,Analytics 在开发和调试过程中也都非常有用,并有助于跟踪生产应用是否成功。

  1. 下载 Firebase C++ SDK,然后将 SDK 解压缩到方便的位置。

    Firebase C++ SDK 并非平台特定,但包含平台专用库。

  2. 在项目的 gradle.properties 文件中指定 SDK 解压缩到的位置:

    systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
    
  3. 将以下内容添加到您项目的 settings.gradle 文件中:

    def firebase_cpp_sdk_dir = System.getProperty('firebase_cpp_sdk.dir')
    
    gradle.ext.firebase_cpp_sdk_dir = "$firebase_cpp_sdk_dir"
    includeBuild "$firebase_cpp_sdk_dir"
    
  4. 将以下内容添加到项目级 build.gradle 文件中:

    android.defaultConfig.externalNativeBuild.cmake {
     arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir"
    }
    
    apply from "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
    firebaseCpp.dependencies {
     analytics
    }
    
  5. 在项目的 CMakeLists.txt 文件中,添加以下内容,包括您要使用的 Firebase 产品适用的。例如,对于 Analytics:

    # Add Firebase libraries to the target using the function from the SDK.
    add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL)
    
    # The core Firebase library (firebase_app) is required to use any Firebase product,
    # and it must always be listed last.
    set(firebase_libs firebase_analytics firebase_app)
    target_link_libraries(${target_name} "${firebase_libs}")
    
  6. 同步您的应用以确保所有依赖项都具有必要的版本。

  7. 运行您的应用,向 Firebase 发送您已成功集成 Firebase 的验证信息。

    您的设备日志将显示说明初始化已完成的 Firebase 验证信息。如果您是在具有网络访问权限的模拟器上运行应用,则 Firebase 控制台会通知您应用连接已完成。

大功告成!您的 C++ 应用现已注册,并配置为使用 Firebase 服务。

可用的库

要详细了解 C++ Firebase 库,请查看参考文档以及 GitHub 上的开源 SDK 版本。

iOS

适用于 iOS 的库

请注意,此设置页面的 Android 版本上列出了适用于 Android 的 C++ 库。

每个 Firebase 产品都有不同的依赖项。请务必将所需 Firebase 产品的所有已列出依赖项都添加到 Podfile 和 C++ 项目中。

Firebase 产品 框架和 Pod
Firebase 核心(必需)

firebase.framework
pod 'Firebase/Core', '5.18.0'
AdMob

firebase.framework
firebase_admob.framework
pod 'Firebase/Core', '5.18.0'
pod 'Firebase/AdMob', '5.18.0'
Analytics

firebase.framework
firebase_analytics.framework
pod 'Firebase/Core', '5.18.0'
身份验证

firebase.framework
firebase_auth.framework
pod 'Firebase/Core', '5.18.0'
pod 'Firebase/Auth', '5.18.0'
Cloud Functions

firebase.framework
firebase_functions.framework
pod 'Firebase/Core', '5.18.0'
pod 'Firebase/Functions', '5.18.0'
云消息传递

firebase.framework
firebase_messaging.framework
pod 'Firebase/Core', '5.18.0'
pod 'Firebase/Messaging', '5.18.0'
Cloud Storage

firebase.framework
firebase_storage.framework
pod 'Firebase/Core', '5.18.0'
pod 'Firebase/Storage', '5.18.0'
动态链接

firebase.framework
firebase_dynamic_links.framework
pod 'Firebase/Core', '5.18.0'
pod 'Firebase/DynamicLinks', '5.18.0'
实时数据库

firebase.framework
firebase_database.framework
pod 'Firebase/Core', '5.18.0'
pod 'Firebase/Database', '5.18.0'
远程配置

firebase.framework
firebase_remote_config.framework
pod 'Firebase/Core', '5.18.0'
pod 'Firebase/RemoteConfig', '5.18.0'

Android

适用于 Android 的库(使用 CMake)

请注意,此设置页面的 iOS 版本上列出了适用于 iOS 的 C++ 库。

Firebase 产品 库参考(使用 CMake)
Firebase 核心(必需) firebase_app
AdMob firebase_admob
Analytics firebase_analytics
身份验证 firebase_auth
Cloud Functions firebase_functions
云消息传递 firebase_messaging
Cloud Storage firebase_storage
动态链接 firebase_dynamic_links
实时数据库 firebase_database
远程配置 firebase_remote_config

有关移动设置的其他信息

iOS

方法调配

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

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

Android

自定义构建系统

Firebase 会提供脚本 generate_xml_from_google_services_json.py,将 google-services.json 转换为您可以包含在项目中的 .xml 资源。此脚本所应用的转换与 Google Play 服务 Gradle 插件在构建 Android 应用时所执行的转换相同。

如果不想使用 Gradle 构建(例如,使用 ndk-build、makefiles、Visual Studio 等),则可以使用此脚本自动生成 Android 字符串资源

ProGuard

许多 Android 构建系统都为处于发布模式的版本使用 ProGuard,来压缩应用大小及保护 Java 源代码。

若要使用 ProGuard,需要在 ProGuard 配置中添加所要使用的 Firebase C++ 库对应的 libs/android/*.pro 中的文件 。

例如,使用 Gradle 时,如果您使用的是 Google Analytics for Firebase,那么您的 build.gradle 文件将如下所示:

android {
  // ...
  buildTypes {
    release {
      minifyEnabled true
      proguardFile getDefaultProguardFile('your-project-proguard-config.txt')
      proguardFile file(project.ext.your_local_firebase_sdk_dir + "/libs/android/app.pro")
      proguardFile file(project.ext.your_local_firebase_sdk_dir + "/libs/android/analytics.pro")
      // ...  and so on, for each Firebase C++ library that you're using
    }
  }
}

Google Play 服务要求

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

您可以使用 google_play_services/availability.h 中的函数来确定 Google Play 服务在客户端设备上不可用的原因(并尝试修复)。

下表列出了对于每个受支持的 Firebase 产品,是否必须在客户端设备上安装 Google Play 服务。

Firebase C++ 库 客户端设备上是否需要安装 Google Play 服务?
AdMob 不需要(通常情况下)
Analytics 不需要
身份验证 需要
Cloud Functions 需要
云消息传递 需要
Cloud Storage 需要
动态链接 需要
实时数据库 需要
远程配置 需要

AdMob 和 Google Play 服务

适用于 Android 的 Google 移动广告 SDK 的大部分版本都可以在未安装 Google Play 服务的客户端设备上正常工作。但是,如果您使用的是 com.google.android.gms:play-services-ads-lite 依赖项,而非上文列出的标准 com.google.firebase:firebase-ads 依赖项,则必须安装 Google Play 服务

只有当同时满足以下两个条件时,AdMob 初始化才会返回 kInitResultFailedMissingDependency

  • Google Play 服务在客户端设备上不可用。
  • 您使用的是 com.google.android.gms:play-services-ads-lite

设置桌面工作流(测试版

在创建游戏时,建议在开发时先在桌面平台上测试您的游戏,然后再在移动设备上进行部署和测试,因为这样往往更轻松。为了支持这种工作流,我们提供了可在 Windows、OS X、Linux 平台上以及 C++ 编辑器中运行的一部分 Firebase C++ SDK

  1. 对于桌面工作流,您需要完成以下操作:

  2. 创建 Firebase 配置文件的桌面版本:

    • 如果您添加了 Android google-services.json 文件 - 当您运行应用时,Firebase 会找到此移动平台文件,然后自动生成桌面平台 Firebase 配置文件 (google-services-desktop.json)。

    • 如果您添加了 iOS GoogleService-Info.plist 文件 - 在运行应用之前,您需要将此移动平台文件转换为桌面平台 Firebase 配置文件。要转换该文件,请从 GoogleService-Info.plist 文件所在的同一目录中运行以下命令:

      generate_xml_from_google_services_json.py --plist -i GoogleService-Info.plist

    此桌面平台配置文件包含您在 Firebase 控制台设置工作流中输入的 C++ 项目 ID。访问了解 Firebase 项目以详细了解配置文件。

  3. 将 Firebase SDK 添加到您的 C++ 项目。

    下述步骤示范了如何将受支持的 Firebase 产品添加到 C++ 项目。在此示例中,我们将完成 Google Analytics for Firebase 添加操作。

    1. FIREBASE_CPP_SDK_DIR 环境变量设置为 Firebase C++ SDK 解压缩到的位置。

    2. 在项目的 CMakeLists.txt 文件中,添加以下内容,包含您要使用的 Firebase 产品的。例如,对于 Analytics:

      # Add Firebase libraries to the target using the function from the SDK.
      add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL)
      
      # The core Firebase library (firebase_app) is required to use any Firebase product,
      # and it must always be listed last.
      set(firebase_libs firebase_analytics firebase_app)
      target_link_libraries(${target_name} "${firebase_libs}")
      
  4. 运行您的 C++ 应用。

可用的库(桌面平台)

Firebase C++ SDK 提供部分功能的桌面工作流支持,让您可以在 Windows、OS X 和 Linux 平台的独立桌面版本中使用 Firebase 的某些功能。

Firebase 产品 库参考(使用 CMake)
Firebase 核心(必需) firebase_app
身份验证 firebase_auth
Cloud Functions firebase_functions
Cloud Storage firebase_storage
实时数据库 firebase_database
远程配置 firebase_remote_config

Firebase 以 Stub(非函数)实现提供其余的桌面库,以方便您针对 Windows、OS X 和 Linux 进行构建。这样一来,您就不必在将桌面平台作为目标时专门编译代码。

实时数据库桌面

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

有关桌面设置的其他信息

Windows 库

对于 Windows,系统会根据以下设置提供库版本:

  • 构建平台:32 位 (x86) 与 64 位 (x64) 模式
  • Windows 运行时环境:多线程/MT 与多线程 DLL/MD
  • 目标:发布与调试

请注意,以下库使用 Visual Studio 2015 和 2017 进行了测试。

在 Windows 上构建 C++ 桌面应用时,请将以下 Windows SDK 库关联到您的项目。有关详情,请参阅您的编译器文档。

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

OS X 库

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

请注意,OS X 库已使用 Xcode 9.4.1 进行了测试。

在 OS X 上构建 C++ 桌面应用时,您需要将以下内容关联到您的项目:

  • pthread 系统库
  • CoreFoundation OS X 系统框架
  • Security OS X 系统框架

有关详情,请参阅您的编译器文档。

Linux 库

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

请注意,Linux 库已在 Ubuntu 上使用 GCC 4.8.0、GCC 7.2.0 和 Clang 5.0 进行了测试。

在 Linux 上构建 C++ 桌面应用时,您需要将 pthread 系统库关联到您的项目。有关详情,请参阅您的编译器文档。使用 GCC 5 或更高版本构建时,您需要定义 -D_GLIBCXX_USE_CXX11_ABI=0