Google 致力于为黑人社区推动种族平等。查看具体举措

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

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

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

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

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

前提条件

  • 安装以下各项:

    • Xcode 12 或更高版本
    • CocoaPods 1.10.0 或更高版本
  • 确保您的项目以 iOS 10 或更高版本为目标。

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

  • 使用您的 Google 帐号登录 Firebase

第 2 步:创建 Firebase 项目

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

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

有了 Firebase 项目后,您就可以将自己的 iOS 应用添加到其中了。

请访问了解 Firebase 项目,详细了解将应用添加到 Firebase 项目的最佳实践和注意事项,包括如何处理多个 build 变体。

  1. 转到 Firebase 控制台

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

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

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

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

  5. 点击注册应用

第 4 步:添加 Firebase 配置文件

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

  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。

      已启用 Analytics

      # Add the Firebase pod for Google Analytics
      pod 'Firebase/Analytics'
      # 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 'Firebase/Auth' pod 'Firebase/Database'

      未启用 Analytics

      # 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 'Firebase/Auth'
      pod 'Firebase/Database'
    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 版本。

适用于 iOS 的库

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

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

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

pod 'Firebase/AdMob', '8.6.0'
(需要)pod 'Firebase/Analytics', '8.6.0'
Analytics (必需)firebase.framework
firebase_analytics.framework

pod 'Firebase/Analytics', '8.6.0'
Authentication (需要)firebase.framework
firebase_auth.framework

pod 'Firebase/Auth', '8.6.0'
Cloud Firestore(Beta 版) (需要)firebase.framework
firebase_firestore.framework
firebase_auth.framework

pod 'Firebase/Firestore', '8.6.0'
pod 'Firebase/Auth', '8.6.0'
Cloud Functions (必需)firebase.framework
firebase_functions.framework

pod 'Firebase/Functions', '8.6.0'
Cloud Messaging (需要)firebase.framework
firebase_messaging.framework
(推荐)firebase_analytics.framework

pod 'Firebase/Messaging', '8.6.0'
(推荐)pod 'Firebase/Analytics', '8.6.0'
Cloud Storage (必需)firebase.framework
firebase_storage.framework

pod 'Firebase/Storage', '8.6.0'
Dynamic Links (需要)firebase.framework
firebase_dynamic_links.framework
(推荐)firebase_analytics.framework

pod 'Firebase/DynamicLinks', '8.6.0'
(推荐)pod 'Firebase/Analytics', '8.6.0'
Realtime Database (必需)firebase.framework
firebase_database.framework

pod 'Firebase/Database', '8.6.0'
Remote Config (需要)firebase.framework
firebase_remote_config.framework
(推荐)firebase_analytics.framework

pod 'Firebase/RemoteConfig', '8.6.0'
(推荐)pod 'Firebase/Analytics', '8.6.0'

有关移动设置的其他信息

方法调配

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

Dynamic Links 和 Cloud 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 Authentication 和 Firebase Realtime Database 添加操作。

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

    2. 在项目的 CMakeLists.txt 文件中,添加以下内容,包括您要使用的 Firebase 产品适用的。例如,要使用 Firebase Authentication 和 Firebase 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 平台的独立桌面版本中使用 Firebase 的某些功能。

Firebase 产品 库引用(使用 CMake)
Authentication firebase_auth
(需要)firebase_app
Cloud Firestore(Beta 版) 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,系统会根据以下设置提供库版本:

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

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

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

Firebase C++ 库 Windows SDK 库依赖项
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 12 进行了测试。

在 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

后续步骤