使用我们的 Firebase C++ SDK 为您的 C++ 游戏提供动力,这些 SDK 在适用于 iOS 和 Android 的 Firebase 之上提供了一个 C++ 接口。
完全从您的 C++ 代码访问 Firebase,无需编写任何平台原生代码。 Firebase SDK 还将 Firebase 使用的许多特定语言的习语翻译成 C++ 开发人员更熟悉的界面。
在我们的Firebase 游戏页面上找到有关使用 Firebase 为您的游戏提供动力的更多信息。
已经将 Firebase 添加到您的 C++ 项目?确保您使用的是最新版本的Firebase C++ SDK 。
先决条件
安装以下内容:
- Xcode 13.3.1 或更高版本
- CocoaPods 1.10.0 或更高版本
确保您的项目面向以下平台版本或更高版本:
- iOS 11
设置物理 iOS 设备或使用 iOS 模拟器来运行您的应用程序。
对于 Apple 平台上的云消息传递,先决条件如下:
- 设置物理 Apple 设备。
- 为您的Apple Developer 帐户获取 Apple Push Notification Authentication Key。
- 在App > Capabilities下的 Xcode 中启用推送通知。
使用您的 Google 帐户登录 Firebase 。
第 2 步:创建一个 Firebase 项目
在将 Firebase 添加到 C++ 项目之前,您需要创建一个 Firebase 项目以连接到 C++ 项目。访问了解 Firebase 项目以了解有关 Firebase 项目的更多信息。
第 3 步:向 Firebase 注册您的应用
要在您的 Apple 应用程序中使用 Firebase,您需要在 Firebase 项目中注册您的应用程序。注册您的应用程序通常称为将您的应用程序“添加”到您的项目中。
转到Firebase 控制台。
在项目概览页面的中央,单击iOS+图标以启动设置工作流程。
如果您已将应用程序添加到 Firebase 项目,请单击添加应用程序以显示平台选项。
在bundle ID字段中输入您应用程序的 bundle ID。
捆绑包 ID唯一标识 Apple 生态系统中的应用程序。
查找您的包 ID:在 Xcode 中打开您的项目,在项目导航器中选择顶级应用程序,然后选择常规选项卡。
Bundle Identifier字段的值是包 ID(例如,
com.yourcompany.yourproject
)。请注意,bundle ID 值区分大小写,在您的 Firebase 项目中注册后,无法更改此 Firebase 应用程序的值。
(可选)输入其他应用信息:应用昵称和App Store ID 。
应用昵称:仅在 Firebase 控制台中对您可见的内部便利标识符
App Store ID :由 Firebase 动态链接用于将用户重定向到您的 App Store 页面,由 Google Analytics 用于将转换事件导入 Google Ads 。如果您的应用还没有 App Store ID,您可以稍后在项目设置中添加 ID。
单击注册应用程序。
第 4 步:添加 Firebase 配置文件
单击下载 GoogleService-Info.plist以获取您的 Firebase Apple 平台配置文件。
Firebase 配置文件包含项目的唯一但非机密标识符。要了解有关此配置文件的更多信息,请访问了解 Firebase 项目。
您可以随时再次下载您的Firebase 配置文件。
确保配置文件名未附加其他字符,例如
(2)
。
在 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
在您的 Podfile 中,添加您要在您的应用中使用的 Firebase pod。
启用分析
# 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'
安装 pod,然后在 Xcode 中打开
.xcworkspace
文件。pod install
open your-app.xcworkspace
从解压缩的 SDK 添加 Firebase框架。
添加这些框架的最简单方法通常是将它们从
Finder
窗口直接拖到 Xcode 的Project Navigator窗格(默认情况下是最左侧的窗格;或单击 Xcode 左上角的文件图标)。添加 Firebase C++ 框架
firebase.framework
,这是使用任何 Firebase 产品所必需的。为您要使用的每个 Firebase 产品添加框架。例如,要使用 Firebase 身份验证,请添加
firebase_auth.framework
。
返回 Firebase 控制台,在设置工作流程中,单击下一步。
如果您添加了 Analytics,请运行您的应用以向 Firebase 发送您已成功集成 Firebase 的验证。否则,您可以跳过此验证步骤。
您的设备日志将显示初始化已完成的 Firebase 验证。如果您在具有网络访问权限的模拟器上运行您的应用程序, Firebase 控制台会通知您应用程序连接已完成。
一切就绪!您的 C++ 应用已注册并配置为使用 Firebase 产品。
可用库
在参考文档和我们在GitHub 上发布的开源 SDK 中了解有关 C++ Firebase 库的更多信息。
适用于 iOS 的可用库
请注意,适用于 Android 的 C++ 库已列在此设置页面的 Android 版本中。
每个 Firebase 产品都有不同的依赖项。请务必将所需 Firebase 产品的所有列出的依赖项添加到您的 Podfile 和 C++ 项目中。
火力地堡产品 | 框架和 Pod |
---|---|
AdMob | (必需) firebase.framework firebase_admob.framework (必需) firebase_analytics.framework pod 'FirebaseAdMob', '10.3.0' (必需) pod 'FirebaseAnalytics', '10.3.0' |
分析 | (必需) firebase.framework firebase_analytics.framework pod 'FirebaseAnalytics', '10.3.0' |
验证 | (必需) firebase.framework firebase_auth.framework pod 'FirebaseAuth', '10.3.0' |
云端 Firestore | (必需) firebase.framework firebase_firestore.framework firebase_auth.framework pod 'FirebaseFirestore', '10.3.0' pod 'FirebaseAuth', '10.3.0' |
云端功能 | (必需) firebase.framework firebase_functions.framework pod 'FirebaseFunctions', '10.3.0' |
云消息 | (必需) firebase.framework firebase_messaging.framework (推荐) firebase_analytics.framework pod 'FirebaseMessaging', '10.3.0' (推荐) pod 'FirebaseAnalytics', '10.3.0' |
云储存 | (必需) firebase.framework firebase_storage.framework pod 'FirebaseStorage', '10.3.0' |
动态链接 | (必需) firebase.framework firebase_dynamic_links.framework (推荐) firebase_analytics.framework pod 'FirebaseDynamicLinks', '10.3.0' (推荐) pod 'FirebaseAnalytics', '10.3.0' |
实时数据库 | (必需) firebase.framework firebase_database.framework pod 'FirebaseDatabase', '10.3.0' |
远程配置 | (必需) firebase.framework firebase_remote_config.framework (推荐) firebase_analytics.framework pod 'FirebaseRemoteConfig', '10.3.0' (推荐) pod 'FirebaseAnalytics', '10.3.0' |
移动设置的附加信息
方法调配
在 iOS 上,某些应用程序事件(例如打开 URL 和接收通知)需要您的应用程序委托来实现特定的方法。例如,接收通知可能需要您的应用程序委托来实现application:didReceiveRemoteNotification:
。因为每个 iOS 应用程序都有自己的应用程序委托,所以 Firebase 使用method swizzling允许将一种方法替换为另一种方法,以在您可能已经实现的任何处理程序之外附加自己的处理程序。
动态链接和云消息传递库需要使用方法调配将处理程序附加到应用程序委托。如果您正在使用这些 Firebase 产品中的任何一个,在加载时,Firebase 将识别您的AppDelegate
类并将所需的方法混入其中,将回调链接回您现有的方法实现。
设置桌面工作流程(测试版)
当您创建游戏时,通常更容易先在桌面平台上测试您的游戏,然后在稍后的开发过程中在移动设备上进行部署和测试。为支持此工作流程,我们提供了Firebase C++ SDK 的一个子集,它们可以在 Windows、macOS、Linux 上以及从 C++ 编辑器中运行。
对于桌面工作流,您需要完成以下操作:
- 为 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 身份验证和 Firebase 实时数据库。
将
FIREBASE_CPP_SDK_DIR
环境变量设置为解压缩的 Firebase C++ SDK 的位置。在您项目的
CMakeLists.txt
文件中,添加以下内容,包括您要使用的 Firebase 产品的库。例如,要使用 Firebase 身份验证和 Firebase 实时数据库:# 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 包括对部分功能的桌面工作流支持,使 Firebase 的某些部分能够在 Windows、macOS 和 Linux 上的独立桌面构建中使用。
火力地堡产品 | 库引用(使用 CMake) |
---|---|
验证 | firebase_auth (必需) firebase_app |
云端 Firestore | firebase_firestore firebase_auth firebase_app |
云端功能 | firebase_functions (必需) firebase_app |
云储存 | firebase_storage (必需) firebase_app |
实时数据库 | firebase_database (必需) firebase_app |
远程配置 | firebase_remote_config (必需) firebase_app |
Firebase 将剩余的桌面库作为存根(非功能性)实现提供,以便在为 Windows、macOS 和 Linux 构建时提供便利。因此,您不需要有条件地编译代码以针对桌面。
实时数据库桌面
桌面版实时数据库 SDK 使用 REST 访问您的数据库,因此您必须声明您在桌面上使用Query::OrderByChild()
的索引,否则您的侦听器将失败。
桌面设置的附加信息
Windows 库
对于 Windows,库版本是根据以下内容提供的:
- 构建平台:32 位 (x86) 与 64 位 (x64) 模式
- Windows运行环境:多线程/MT vs 多线程DLL/MD
- 目标:发布与调试
请注意,以下库已使用 Visual Studio 2015 和 2017 进行测试。
在 Windows 上构建 C++ 桌面应用程序时,将以下 Windows SDK 库链接到您的项目。有关更多信息,请参阅您的编译器文档。
Firebase C++ 库 | Windows SDK 库依赖项 |
---|---|
验证 | advapi32, ws2_32, crypt32 |
云端 Firestore | advapi32, ws2_32, crypt32, rpcrt4, ole32, shell32 |
云端功能 | advapi32, ws2_32, crypt32, rpcrt4, ole32 |
云储存 | advapi32, ws2_32, crypt32 |
实时数据库 | advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv |
远程配置 | advapi32, ws2_32, crypt32, rpcrt4, ole32 |
macOS 库
对于 macOS (Darwin),为 64 位 (x86_64) 平台提供了库版本。为方便起见,还提供了框架。
请注意,macOS 库已经使用 Xcode 13.3.1 进行了测试。
在 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
。
下一步
探索GitHub 中的开源 SDK 。
准备启动您的应用程序:
- 在 Google Cloud Console 中为您的项目设置预算提醒。
- 监控 Firebase 控制台中的使用情况和计费仪表板,以全面了解您的项目在多个 Firebase 服务中的使用情况。
- 查看Firebase 启动清单。