將 Firebase 新增至您的 C++ 專案

Firebase C++ SDK 提供以 Firebase SDK 為基礎的 C++ 介面,可提升 C++ 遊戲的工作效率。

完全可從 C++ 程式碼存取 Firebase,無須編寫任何平台原生程式碼。Firebase SDK 也會將 Firebase 使用的許多語言特定用語轉譯為較熟悉 C++ 開發人員的介面。

如要進一步瞭解如何透過 Firebase 強化遊戲,請參閱我們的 Firebase 遊戲頁面

已將 Firebase 新增至 C++ 專案了嗎?確認您使用的是最新版的 Firebase C++ SDK

先備知識

  • 安裝下列項目:

    • Xcode 13.3.1 以上版本
    • CocoaPods 1.12.0 以上版本
  • 請確認您的專案指定下列平台版本或更新版本:

    • iOS 11 作業系統
    • tvOS 12
  • 設定實體裝置或使用模擬器執行應用程式。

  • 使用 Google 帳戶登入 Firebase

步驟 2:建立 Firebase 專案

您需要先建立 Firebase 專案並連結至 C++ 專案,才能將 Firebase 新增至您的 C++ 專案。如要進一步瞭解 Firebase 專案,請參閱「瞭解 Firebase 專案」。

步驟 3:向 Firebase 註冊應用程式

如要在 Apple 應用程式中使用 Firebase,您必須使用 Firebase 專案註冊應用程式。註冊應用程式通常稱為「新增」應用程式至專案中。

  1. 前往 Firebase 主控台

  2. 在專案總覽頁面中間,按一下「iOS+」圖示來啟動設定工作流程。

    如果您已經在 Firebase 專案中加入應用程式,請按一下「Add app」顯示平台選項。

  3. 在「bundle ID」欄位中輸入應用程式的軟體包 ID。

  4. (選用) 輸入其他應用程式資訊:「應用程式暱稱」和「App Store ID」

  5. 按一下 [Register app] (註冊應用程式)

步驟 4:新增 Firebase 設定檔

  1. 點選 [Download GoogleService-Info.plist] (下載 GoogleService-Info.plist),取得 Firebase Apple 平台設定檔。

  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 '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'

      未啟用 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 'FirebaseAuth'
      pod 'FirebaseDatabase'
    3. 安裝 Pod,然後在 Xcode 中開啟 .xcworkspace 檔案。

      pod install
      open your-app.xcworkspace

  3. 從解壓縮的 SDK 新增 Firebase 架構

    新增這些架構的最簡單方法,通常是從 Finder 視窗直接將架構拖曳至 Xcode 的「Project Navigator」窗格 (預設為最左側窗格,或者按一下 Xcode 左上方的檔案圖示)。

    1. 新增 Firebase C++ 架構 firebase.framework,這是使用任何 Firebase 產品的必要條件

    2. 為您要使用的每項 Firebase 產品新增架構。舉例來說,如要使用 Firebase 驗證,請新增 firebase_auth.framework

  4. 返回 Firebase 控制台,在設定工作流程中點選「下一步」

  5. 如果您已新增 Analytics (分析),請執行應用程式,將驗證成功傳送至 Firebase 。否則,您可以略過此驗證步驟。

    您的裝置記錄會顯示初始化完成的 Firebase 驗證。如果您在具備網路存取權的模擬器上執行應用程式,Firebase 主控台會通知您應用程式連線已完成。

大功告成!C++ 應用程式已註冊並設定為使用 Firebase 產品。

可用的程式庫

如要進一步瞭解 C++ Firebase 程式庫,請參閱參考說明文件,以及 GitHub 上的開放原始碼 SDK 版本。

Apple 平台可用的程式庫

請注意,這個設定頁面的 Android 版本列出了 Android 適用的 C++ 程式庫。

每項 Firebase 產品都有不同的依附元件。請務必將所需 Firebase 產品的所有依附元件,新增至 Podfile 和 C++ 專案。

每項 Firebase 產品可能僅支援部分 Apple OS 平台 (iOS、tvOS 等)。如要查看每個程式庫支援的平台,請參閱進一步瞭解 C++ 和 Firebase

Firebase 產品 架構和 Pod
AdMob (必填) firebase.framework
firebase_admob.framework
(必填) firebase_analytics.framework

pod 'FirebaseAdMob', '10.25.0'
(必填) pod 'FirebaseAnalytics', '10.25.0'
數據分析 (必要) firebase.framework
firebase_analytics.framework

pod 'FirebaseAnalytics', '10.25.0'
App Check (必要) firebase.framework
firebase_app_check.framework

pod 'FirebaseAppCheck', '10.25.0'
身分驗證 (必要) firebase.framework
firebase_auth.framework

pod 'FirebaseAuth', '10.25.0'
Cloud Firestore (必填) firebase.framework
firebase_firestore.framework
firebase_auth.framework

pod 'FirebaseFirestore', '10.25.0'
pod 'FirebaseAuth', '10.25.0'
Cloud Functions (必要) firebase.framework
firebase_functions.framework

pod 'FirebaseFunctions', '10.25.0'
雲端通訊 (必要) firebase.framework
firebase_messaging.framework
(建議) firebase_analytics.framework

pod 'FirebaseMessaging', '10.25.0'
(建議) pod 'FirebaseAnalytics', '10.25.0'
Cloud Storage (必要) firebase.framework
firebase_storage.framework

pod 'FirebaseStorage', '10.25.0'
動態連結 (必要) firebase.framework
firebase_dynamic_links.framework
(建議) firebase_analytics.framework

pod 'FirebaseDynamicLinks', '10.25.0'
(建議) pod 'FirebaseAnalytics', '10.25.0'
即時資料庫 (必要) firebase.framework
firebase_database.framework

pod 'FirebaseDatabase', '10.25.0'
遠端設定 (必要) firebase.framework
firebase_remote_config.framework
(建議) firebase_analytics.framework

pod 'FirebaseRemoteConfig', '10.25.0'
(建議) pod 'FirebaseAnalytics', '10.25.0'

行動裝置設定的其他資訊

方法滑動

在 iOS 上,某些應用程式事件 (例如開啟網址和接收通知) 需要應用程式委派來實作特定方法。舉例來說,如要接收通知,應用程式委派可能需要實作 application:didReceiveRemoteNotification:。由於每個 iOS 應用程式都有專屬的應用程式委派項目,因此 Firebase 會使用「方法滑動」來取代其中一種方法,以附加您實作的任何處理常式。

Dynamic Links 和雲端通訊程式庫需要使用方法滑動,將處理常式附加至應用程式委派代表。如果您使用上述任何 Firebase 產品,Firebase 會在載入時識別您的 AppDelegate 類別並處理必要方法,進而鏈結回呼至現有方法實作。

設定電腦工作流程 (Beta 版)

建立遊戲時,建議您先在電腦平台上測試遊戲,之後再開發遊戲並在行動裝置上進行測試。為支援這項工作流程,我們提供 Firebase C++ SDK 的子集,可以在 Windows、macOS、Linux 和 C++ 編輯器中執行。

  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 驗證和 Firebase 即時資料庫

    1. FIREBASE_CPP_SDK_DIR 環境變數設為解壓縮後的 Firebase C++ SDK 位置。

    2. 在專案的 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}")
      
  4. 執行 C++ 應用程式。

可用程式庫 (電腦)

Firebase C++ SDK 針對部分功能的電腦版工作流程支援,可讓 Firebase 的特定部分在 Windows、macOS 和 Linux 的獨立桌面版本中使用。

Firebase 產品 程式庫參考資料 (使用 CMake)
App Check firebase_app_check
(必填) firebase_app
身分驗證 firebase_auth
(必填) firebase_app
Cloud Firestore firebase_firestore
firebase_auth
firebase_app
Cloud Functions firebase_functions
(必填) firebase_app
Cloud Storage firebase_storage
(必填) firebase_app
即時資料庫 firebase_database
(必填) firebase_app
遠端設定 firebase_remote_config
(必填) firebase_app

Firebase 提供剩餘的桌面程式庫做為虛設常式 (非功能性) 實作,方便您建構 Windows、macOS 和 Linux。因此,您不需要條件式編譯程式碼即可指定電腦。

即時資料庫桌面

電腦版的 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 程式庫依附元件
App Check advapi32, ws2_32, crypt32
驗證機制 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
即時資料庫 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

後續步驟