Catch up on highlights from Firebase at Google I/O 2023. Learn more

使用 C++ 接收動態鏈接

要接收您創建的Firebase 動態鏈接,您必須在您的應用中包含動態鏈接 SDK 並創建一個實現OnDynamicLinkReceived虛函數的firebase::dynamic_links::Listener對象。

C++ SDK 適用於 Android 和 iOS,每個平台都需要一些額外的設置。

在你開始之前

在使用Firebase 動態鏈接之前,您需要:

  • 註冊您的 C++ 項目並將其配置為使用 Firebase。

    如果您的 C++ 項目已經使用 Firebase,那麼它已經針對 Firebase 進行了註冊和配置。

  • Firebase C++ SDK添加到您的 C++ 項目。

請注意,將 Firebase 添加到您的 C++ 項目涉及Firebase 控制台和您打開的 C++ 項目中的任務(例如,您從控制台下載 Firebase 配置文件,然後將它們移動到您的 C++ 項目中)。

添加自定義 URL 方案(僅適用於 iOS)

Firebase Dynamic Links C++ 客戶端庫在 iOS 上使用自定義 URL 方案來處理鏈接。您必須將自定義 URL 方案添加到您的應用程序以支持接收動態鏈接。

  1. 要打開項目配置,請雙擊左側樹視圖中的項目名稱。

  2. TARGETS部分選擇您的應用程序,然後選擇Info選項卡,然後展開URL Types部分。

  3. 單擊+按鈕,然後為反向客戶端 ID 添加 URL 方案。要找到這個值:

    1. 打開GoogleService-Info.plist配置文件,然後查找REVERSED_CLIENT_ID鍵。

    2. 複製該鍵的值,然後將其粘貼到配置頁面上的URL Schemes框中。

    3. 將其他字段留空。

  4. 單擊+按鈕,然後添加第二個 URL 方案。這一個與您應用程序的捆綁包 ID 相同。

    例如,如果您的包 ID 是com.example.ios ,請將該值鍵入URL Schemes框中。

    您可以在項目配置的常規選項卡中找到您的應用程序的捆綁包 ID ( Identity > Bundle Identifier )。

接收動態鏈接

創建並初始化應用

在檢查收到的動態鏈接之前,您需要創建並初始化一個firebase::App對象。

包括firebase::App的頭文件:

#include "firebase/app.h"

下一部分因平台而異:

安卓

創建firebase::App ,將 JNI 環境和對 Java Activity 的jobject引用作為參數傳遞:

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"), jni_env, activity);

蘋果系統

創建firebase::App

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"));

實施偵聽器以檢查動態鏈接

要檢查收到的動態鏈接,請實施並使用firebase::dynamic_links::Listener類。

包含用於接收動態鏈接的頭文件:

#include "firebase/dynamic_links.h"

初始化動態鏈接庫:

::firebase::dynamic_links::Initialize(app, null);

創建一個實現firebase::dynamic_links::Listener對象,並使用SetListener()將其提供給動態鏈接庫,或將其作為第二個參數傳遞給Initialize

要接收動態鏈接,您的 Listener 類必須實現OnDynamicLinkReceived虛函數。通過重寫該方法,您可以獲得深層鏈接(如果已收到)。

class Listener : public firebase::dynamic_links::Listener {
 public:
  // Called on the client when a dynamic link arrives.
  void OnDynamicLinkReceived(
      const firebase::dynamic_links::DynamicLink* dynamic_link) override {
    printf("Received link: %s", dynamic_link->url.c_str());
  }
};