使用 C++ 接收 Dynamic Links

如要接收您建立Firebase Dynamic Links,您必須在應用程式中加入 Dynamic Links SDK,並建立實作 OnDynamicLinkReceived 虛擬函式的 firebase::dynamic_links::Listener 物件。

C++ SDK 適用於 Android 和 iOS,但每個平台都需要額外設定。

事前準備

如要使用 Firebase Dynamic Links,您必須先完成下列步驟:

  • 註冊 C++ 專案並設定使用 Firebase。

    如果您的 C++ 專案已使用 Firebase,則表示已為 Firebase 註冊及設定。

  • Firebase C++ SDK 新增至 C++ 專案。

請注意,將 Firebase 新增至 C++ 專案時,必須同時在 Firebase 主控台和您開啟的 C++ 專案中執行任務 (例如,從主控台下載 Firebase 設定檔,然後將其移至 C++ 專案)。

新增自訂網址通訊協定 (僅限 iOS)

Firebase Dynamic Links C++ 用戶端程式庫會使用 iOS 上的自訂網址通訊協定來處理連結。您必須在應用程式中新增自訂網址配置,才能支援接收 Dynamic Links

  1. 如要開啟專案設定,請在左側的樹狀檢視畫面中雙擊專案名稱。

  2. 從「TARGETS」部分選取應用程式,然後選取「Info」分頁,接著展開「URL Types」部分。

  3. 按一下「+」按鈕,然後為已反轉的客戶端 ID 新增網址配置。如要找出這個值,請按照下列步驟操作:

    1. 開啟 GoogleService-Info.plist 設定檔,然後尋找 REVERSED_CLIENT_ID 鍵。

    2. 複製該鍵的值,然後貼到設定頁面中的「網址配置」方塊中。

    3. 將其他欄位留空。

  4. 按一下「+」按鈕,然後新增第二個網址配置。這個值與應用程式的軟體包 ID 相同。

    舉例來說,如果套件 ID 是 com.example.ios,請在「網址配置」方塊中輸入這個值。

    您可以在專案設定的「一般」分頁 (「Identity」>「Bundle Identifier」) 中找到應用程式的軟體包 ID。

接收 Dynamic Link

建立及初始化應用程式

您必須先建立並初始化 firebase::App 物件,才能檢查收到的 Dynamic Links

納入 firebase::App 的標頭檔案:

#include "firebase/app.h"

接下來的步驟會因平台而異:

Android

建立 firebase::App,並將 JNI 環境和 jobject 參照 Java 活動做為引數傳遞:

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

iOS

建立 firebase::App

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

實作 Listener 來檢查 Dynamic Links

如要檢查收到的 Dynamic Link,請實作並使用 firebase::dynamic_links::Listener 類別。

納入接收 Dynamic Links 的標頭檔案:

#include "firebase/dynamic_links.h"

初始化 Dynamic Links 程式庫:

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

建立實作 firebase::dynamic_links::Listener 的物件,並透過 SetListener() 將其提供給 Dynamic Links 程式庫,或將其做為第二個引數傳遞至 Initialize

如要接收 Dynamic Links,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());
  }
};