Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

使用 C++ 接收動態鏈接

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

要接收您創建的 Firebase 動態鏈接,您必須在您的應用中包含動態鏈接 SDK,並創建一個實現OnDynamicLinkReceived虛函數的 firebase 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 動態鏈接 C++ 客戶端庫在 iOS 上使用自定義 URL 方案來處理鏈接。您必須將自定義 URL 方案添加到您的應用程序以支持接收動態鏈接。

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

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

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

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

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

    3. 將其他字段留空。

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

    例如,如果您的捆綁包 ID 是com.example.ios ,請將該值輸入到URL 方案框中。

    您可以在項目配置的General選項卡中找到您應用的 bundle ID( Identity > Bundle Identifier )。

接收動態鏈接

創建和初始化應用程序

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

包括firebase::App的頭文件:

#include "firebase/app.h"

下一部分因您的平台而異:

安卓

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

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

iOS

創建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

要接收動態鏈接,您的偵聽器類必須實現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());
  }
};