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

Firebase C++ SDK 提供了以 Firebase SDK 为基础的 C++ 接口,可为您的 C++ 游戏提供强力支持。

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

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

已将 Firebase 添加到您的 C++ 项目中?确保您使用的是最新版 Firebase C++ SDK


前提条件

  • 安装以下各项:

    • Xcode 16.2 或更高版本
    • CocoaPods 1.12.0 或更高版本
  • 确保您的项目以下列版本或更高版本的平台为目标:

    • iOS 13
    • tvOS 13
  • 设置一台实体设备或使用模拟器运行您的应用。

    若要在 Apple 平台上使用 Cloud Messaging,需满足以下前提条件:

    • 设置 Apple 实体设备
    • 获取您的 Apple 开发者账号的 Apple 推送通知身份验证密钥。
    • 在 Xcode 中通过 App(应用)> Capabilities(功能)启用推送通知功能。

  • 使用您的 Google 账号登录 Firebase

第 2 步:创建 Firebase 项目

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

如果您是 Firebase 或 Google Cloud 的新用户,请按以下步骤操作。
如果您想创建一个全新的 Firebase 项目(以及其底层 Google Cloud 项目),也可以按照这些步骤操作。

  1. 登录 Firebase 控制台
  2. 点击相应按钮以创建新的 Firebase 项目。
  3. 在文本字段中输入项目名称

    如果您是 Google Cloud 组织的成员,可以酌情选择在某个文件夹中创建项目(可选)。

  4. 如果看到相关提示,请查看并接受 Firebase 条款,然后点击继续
  5. (可选)Firebase 控制台中启用 AI 辅助功能(称为“Gemini in Firebase”),可帮助您快速入门并简化开发流程。
  6. (可选)为您的项目设置 Google Analytics,这样您在使用以下 Firebase 产品时可获得最佳体验:Firebase A/B TestingCloud MessagingCrashlyticsIn-App MessagingRemote Config(包括个性化)。

    您可以选择一个现有的 Google Analytics 账号,或者创建一个新账号。如果您创建新账号,请选择 Analytics 报告位置,然后接受项目的数据共享设置和 Google Analytics 条款。

  7. 点击 Create project

Firebase 会创建您的项目,预配一些初始资源,并启用重要 API。完成此过程后,您将进入 Firebase 控制台中该 Firebase 项目的概览页面。

如果您想在现有 Google Cloud 项目中开始使用 Firebase,请按以下步骤操作。详细了解如何将 Firebase 添加到现有 Google Cloud 项目

  1. 使用拥有现有 Google Cloud 项目访问权限的账号登录 Firebase 控制台
  2. 点击相应按钮以创建新的 Firebase 项目。
  3. 在页面底部,点击将 Firebase 添加到 Google Cloud 项目
  4. 在文本字段中输入现有项目的项目名称,然后从显示的列表中选择该项目。
  5. 点击打开项目
  6. 如果看到相关提示,请查看并接受 Firebase 条款,然后点击继续
  7. (可选)Firebase 控制台中启用 AI 辅助功能(称为“Gemini in Firebase”),可帮助您快速入门并简化开发流程。
  8. (可选)为您的项目设置 Google Analytics,这样您在使用以下 Firebase 产品时可获得最佳体验:Firebase A/B TestingCloud MessagingCrashlyticsIn-App MessagingRemote Config(包括个性化)。

    您可以选择一个现有的 Google Analytics 账号,或者创建一个新账号。如果您创建新账号,请选择 Analytics 报告位置,然后接受项目的数据共享设置和 Google Analytics 条款。

  9. 点击添加 Firebase

Firebase 会将 Firebase 添加到现有项目。 完成此过程后,系统会将您带到 Firebase 控制台中该 Firebase 项目的概览页面。

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

如需在 Apple 应用中使用 Firebase,您需要在 Firebase 项目中注册您的应用。注册应用的过程通常称为将应用“添加”到项目中。

  1. 前往 Firebase 控制台

  2. 在项目概览页面的中心位置,点击 iOS+ 图标,启动设置工作流。

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

  3. 软件包 ID 字段中输入应用的软件包 ID。

    • 软件包 ID 是应用在 Apple 生态系统中的唯一标识符。

    • 如何找到您的软件包 ID:在 Xcode 中打开您的项目,在项目导航器中选择顶级应用,然后选择 General(常规)标签页。

      Bundle Identifier(软件包标识符)字段的值就是软件包 ID(例如 com.yourcompany.yourproject)。

    • 请注意,软件包 ID 值区分大小写,此 Firebase 应用在您的 Firebase 项目中注册后,该值便无法更改。

  4. (可选)输入其他应用信息:应用别名App Store ID

  5. 点击注册应用

第 4 步:添加 Firebase 配置文件

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

    • 此 Firebase 配置文件包含项目和应用的唯一标识符(但不涉及机密信息)。如需进一步了解该配置文件,请访问了解 Firebase 项目

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

    • 请确保该配置文件名未附加其他字符,如 (2)

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

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

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

第 5 步:添加 Firebase C++ SDK

本部分中的步骤说明了如何将受支持的 Firebase 产品添加到 Firebase C++ 项目。

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

    Firebase C++ SDK 并不局限于特定平台,但包含平台专用库。

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

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

      cd your-app-directory
      pod init

    2. 将想要在应用中使用的 Firebase pod 添加到 Podfile。

      # Add the Firebase pod for Google Analytics
      pod 'FirebaseAnalytics'
      # Add the pods for any other Firebase products you want to use in your app # For example, to use Firebase Authentication and Firebase Realtime Database pod 'FirebaseAuth' pod 'FirebaseDatabase'
      # Add the pods for the Firebase products you want to use in your app
      # For example, to use Firebase Authentication and Firebase Realtime Database
      pod 'FirebaseAuth'
      pod 'FirebaseDatabase'
    3. 安装 Pod,然后在 Xcode 中打开 .xcworkspace

      pod install
      open your-app.xcworkspace

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

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

    1. 如需使用任何 Firebase 产品,必须添加 Firebase C++ 框架 firebase.framework

    2. 为您要使用的每个 Firebase 产品添加框架。例如,如需使用 Firebase Authentication,请添加 firebase_auth.framework

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

  5. 如果您添加了 Analytics,请运行您的应用,向 Firebase 发送您已成功集成 Firebase 的验证信息。如果您没有添加 Analytics,则可以跳过验证步骤。

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

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

可用的库

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

适用于 Apple 平台的库

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

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

每个 Firebase 产品可能仅支持部分 Apple 操作系统平台(iOS、tvOS 等)。请查看详细了解 C++ 和 Firebase,了解各个库支持的平台。

Firebase 产品 框架和 Pod
AdMob (需要)firebase.framework
firebase_admob.framework
(需要)firebase_analytics.framework

pod 'FirebaseAdMob', '12.2.0'
(需要)pod 'FirebaseAnalytics', '12.2.0'
Analytics (需要)firebase.framework
firebase_analytics.framework

pod 'FirebaseAnalytics', '12.2.0'
App Check (需要)firebase.framework
firebase_app_check.framework

pod 'FirebaseAppCheck', '12.2.0'
Authentication (需要)firebase.framework
firebase_auth.framework

pod 'FirebaseAuth', '12.2.0'
Cloud Firestore (需要)firebase.framework
firebase_firestore.framework
firebase_auth.framework

pod 'FirebaseFirestore', '12.2.0'
pod 'FirebaseAuth', '12.2.0'
Cloud Functions (需要)firebase.framework
firebase_functions.framework

pod 'FirebaseFunctions', '12.2.0'
Cloud Messaging (需要)firebase.framework
firebase_messaging.framework
(推荐)firebase_analytics.framework

pod 'FirebaseMessaging', '12.2.0'
(推荐)pod 'FirebaseAnalytics', '12.2.0'
Cloud Storage (需要)firebase.framework
firebase_storage.framework

pod 'FirebaseStorage', '12.2.0'
Dynamic Links (需要)firebase.framework
firebase_dynamic_links.framework
(推荐)firebase_analytics.framework

pod 'FirebaseDynamicLinks', '12.2.0'
(推荐)pod 'FirebaseAnalytics', '12.2.0'
Realtime Database (需要)firebase.framework
firebase_database.framework

pod 'FirebaseDatabase', '12.2.0'
Remote Config (需要)firebase.framework
firebase_remote_config.framework
(推荐)firebase_analytics.framework

pod 'FirebaseRemoteConfig', '12.2.0'
(推荐)pod 'FirebaseAnalytics', '12.2.0'

有关移动设置的其他信息

方法调配

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

Dynamic LinksCloud Messaging 库需要使用方法调配将处理程序附加给应用委托。如果您使用了这些 Firebase 产品中的任何一种,在加载时,Firebase 会识别 AppDelegate 类并为其调配必要的方法,将一个回调链接到现有方法实现。

设置桌面工作流(Beta 版

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

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

    1. 为 CMake 配置 C++ 项目。
    2. 创建 Firebase 项目
    3. 在 Firebase 中注册您的应用(iOS 或 Android)
    4. 添加移动平台 Firebase 配置文件
  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++ 项目。在本示例中,我们将完成 Firebase AuthenticationFirebase Realtime Database 添加操作。

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

    2. 在项目的 CMakeLists.txt 文件中,添加以下内容,包括您要使用的 Firebase 产品适用的。例如,使用 Firebase AuthenticationFirebase Realtime Database

      # Add Firebase libraries to the target using the function from the SDK.
      add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL)
      
      # The Firebase C++ library `firebase_app` is required,
      # and it must always be listed last.
      
      # Add the Firebase SDKs for the products you want to use in your app
      # For example, to use Firebase Authentication and Firebase Realtime Database
      set(firebase_libs firebase_auth firebase_database firebase_app)
      target_link_libraries(${target_name} "${firebase_libs}")
  4. 运行您的 C++ 应用。

可用的库(桌面平台)

Firebase C++ SDK 为部分功能提供桌面工作流支持,让您可以在 Windows、macOS 和 Linux 上的独立桌面 build 中使用 Firebase 的某些部分。

Firebase 产品 库引用(使用 CMake)
App Check firebase_app_check
(需要)firebase_app
Authentication firebase_auth
(需要)firebase_app
Cloud Firestore firebase_firestore
firebase_auth
firebase_app
Cloud Functions firebase_functions
(需要)firebase_app
Cloud Storage firebase_storage
(需要)firebase_app
Realtime Database firebase_database
(需要)firebase_app
Remote Config firebase_remote_config
(需要)firebase_app

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

Realtime Database 桌面

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

有关桌面设置的其他信息

Windows 库

对于 Windows,我们根据以下各项提供库版本:

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

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

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

Firebase C++ 库 Windows SDK 库依赖项
App Check advapi32, ws2_32, crypt32
Authentication advapi32, ws2_32, crypt32
Cloud Firestore advapi32, ws2_32, crypt32, rpcrt4, ole32, shell32
Cloud Functions advapi32, ws2_32, crypt32, rpcrt4, ole32
Cloud Storage advapi32, ws2_32, crypt32
Realtime Database advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv
Remote Config advapi32, ws2_32, crypt32, rpcrt4, ole32

macOS 库

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

请注意,macOS 库已使用 Xcode 16.2 进行了测试。

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

  • pthread 系统库
  • CoreFoundation macOS 系统框架
  • Foundation macOS 系统框架
  • Security macOS 系统框架
  • GSS macOS 系统框架
  • Kerberos macOS 系统框架
  • SystemConfiguration macOS 系统框架

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

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

后续步骤