将 Firebase 添加到您的 C++ 项目
Firebase C++ SDK 在适用于 iOS 和 Android 的 Firebase 的基础上提供了 C++ 接口,可为您的 C++ 游戏提供强力支持。
完全利用 C++ 代码访问 Firebase,无需编写任何平台原生代码。Firebase SDK 还将 Firebase 使用的许多编程语言所特有的习语转译为 C++ 开发人员更为熟悉的接口。
如需详细了解如何使用 Firebase 为您的游戏提供强力支持,请访问我们的 Firebase 游戏页面。
已将 Firebase 添加到您的 C++ 项目中了吗?确保您使用的是最新版 Firebase C++ SDK。
前提条件
安装以下各项:
- Xcode 11.7 或更高版本
- CocoaPods 1.10.0 或更高版本
确保您的项目以 iOS 10 或更高版本为目标。
设置一台 iOS 实体设备或使用 iOS 模拟器运行您的应用。
使用您的 Google 帐号登录 Firebase。
第 2 步:创建 Firebase 项目
您需要先创建一个要关联到 C++ 项目的 Firebase 项目,然后才能将该 Firebase 添加到 C++ 项目。访问了解 Firebase 项目以详细了解 Firebase 项目。
第 3 步:在 Firebase 中注册您的应用
有了 Firebase 项目后,您就可以将自己的 iOS 应用添加到其中了。
请访问了解 Firebase 项目以详细了解将应用添加到 Firebase 项目的最佳做法和注意事项,包括如何处理多个构建变体。
转到 Firebase 控制台。
在项目概览页面的中心位置,点击 iOS 图标 (
),启动设置工作流。如果您已向 Firebase 项目添加过应用,请点击添加应用以显示平台选项。
在 iOS 软件包 ID 字段中输入应用的软件包 ID。
(可选)输入其他应用信息:应用别名和 App Store ID。
点击注册应用。
第 4 步:添加 Firebase 配置文件
点击下载 GoogleService-Info.plist 以获取 Firebase iOS 配置文件。
在 IDE 中打开您的 C++ 项目,然后将配置文件拖到 C++ 项目的根目录中。
如果出现提示,请选择将配置文件添加到所有目标。
您已完成在 Firebase 控制台中的设置任务。请继续执行下面的步骤,来添加 Firebase C++ SDK。
第 5 步:添加 Firebase C++ SDK
本部分中的步骤说明了如何将受支持的 Firebase 产品添加到 Firebase C++ 项目。
下载 Firebase C++ SDK,然后将 SDK 解压缩到方便的位置。
Firebase C++ SDK 并非平台特定,但包含平台专用库。
从解压缩的 SDK 添加 Firebase Pod。
如果您没有 Podfile,请创建一个:
cd your-app-directory
pod init
将想要用在应用中的 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'
安装 Pod,然后在 Xcode 中打开
.xcworkspace
。pod install
open your-app.xcworkspace
从解压缩的 SDK 添加 Firebase 框架。
要添加这些框架,最简单方法通常是将它们从
Finder
窗口直接拖动到 Xcode 的项目导航窗格(默认情况下为最左侧窗格;或点击 Xcode 左上角的文件图标)中。要使用任何 Firebase 产品,必须添加 Firebase C++ 框架
firebase.framework
。为您要使用的每个 Firebase 产品添加框架。例如,要使用 Firebase Authentication,请添加
firebase_auth.framework
。
返回 Firebase 控制台,在设置工作流中,点击下一步。
如果您添加了 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', '7.5.0' (必需) pod 'Firebase/Analytics', '7.5.0'
|
Analytics |
(必需)firebase.framework firebase_analytics.framework pod 'Firebase/Analytics', '7.5.0'
|
Authentication |
(需要)firebase.framework firebase_auth.framework pod 'Firebase/Auth', '7.5.0'
|
Cloud Firestore(Beta 版) |
(需要)firebase.framework firebase_firestore.framework firebase_auth.framework pod 'Firebase/Firestore', '7.5.0' pod 'Firebase/Auth', '7.5.0'
|
Cloud Functions |
(必需)firebase.framework firebase_functions.framework pod 'Firebase/Functions', '7.5.0'
|
Cloud Messaging |
(必需)firebase.framework firebase_messaging.framework (推荐) firebase_analytics.framework pod 'Firebase/Messaging', '7.5.0' (推荐) pod 'Firebase/Analytics', '7.5.0'
|
Cloud Storage |
(必需)firebase.framework firebase_storage.framework pod 'Firebase/Storage', '7.5.0'
|
Dynamic Links |
(必需)firebase.framework firebase_dynamic_links.framework (推荐) firebase_analytics.framework pod 'Firebase/DynamicLinks', '7.5.0' (推荐) pod 'Firebase/Analytics', '7.5.0'
|
Realtime Database |
(必需)firebase.framework firebase_database.framework pod 'Firebase/Database', '7.5.0'
|
Remote Config |
(需要)firebase.framework firebase_remote_config.framework (推荐) firebase_analytics.framework pod 'Firebase/RemoteConfig', '7.5.0' (推荐) pod 'Firebase/Analytics', '7.5.0'
|
有关移动设置的其他信息
方法调配
在 iOS 中,某些应用事件(如打开网址和接收通知)需要您的应用委托来实现一些特定方法。例如,接收通知可能需要您的应用委托来实现 application:didReceiveRemoteNotification:
。每个 iOS 应用都有各自的应用委托,因此 Firebase 使用“方法调配”(method swizzling) 来让一种方法替换另一种方法,以附加除任何已实现处理程序外自己的处理程序。
Dynamic Links 和 Cloud Messaging 库需要使用方法调配将处理程序附加给应用委托。如果您使用了这些 Firebase 产品中的任何产品,在加载时,Firebase 将识别您的 AppDelegate
类并为其调配必要的方法,将一个回调链接到现有方法实现。
设置桌面工作流(Beta 版)
在创建游戏时,建议在开发时先在桌面平台上测试您的游戏,然后再在移动设备上进行部署和测试,因为这样往往更轻松。为了支持这种工作流,我们提供了可在 Windows、macOS、Linux 平台上以及 C++ 编辑器中运行的一部分 Firebase C++ SDK:
对于桌面工作流,您需要完成以下操作:
- 为 CMake 配置 C++ 项目。
- 创建 Firebase 项目
- 在 Firebase 中注册您的应用(iOS 或 Android)
- 添加移动平台 Firebase 配置文件
创建 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 项目以详细了解配置文件。
将 Firebase SDK 添加到您的 C++ 项目。
下述步骤示范了如何将受支持的 Firebase 产品添加到 C++ 项目。在此示例中,我们将完成 Firebase Authentication 和 Firebase Realtime Database 添加操作。
将
FIREBASE_CPP_SDK_DIR
环境变量设置为 Firebase C++ SDK 解压缩到的位置。在项目的
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}")
运行您的 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 11.7 进行了测试。
在 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
。
后续步骤
探索 Firebase 应用示例。
浏览 GitHub 中的开源 SDK。
准备启动您的应用:
- 在 Google Cloud Console 中为您的项目设置预算提醒。
- 在 Firebase 控制台中监控“使用量和结算”信息中心,以全面了解您的项目在多个 Firebase 服务中的使用情况。
- 查看 Firebase 发布核对清单。