使用 C++ 建立 Dynamic Links

您可以使用 Firebase Dynamic Links API 建立短或長 Dynamic Links。API 會使用多個選用參數結構來建立連結。您也可以使用先前產生的長連結建立短連結。Firebase Dynamic Links 會產生類似以下的網址:

https://example.page.link/WXYZ

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

事前準備

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

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

    如果您的 C++ 專案已使用 Firebase,則專案已針對 Firebase 完成註冊並完成相關設定。

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

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

Android

  1. Firebase 主控台中,開啟「Dynamic Links專區。
  2. 如果您尚未接受服務條款,並為 Dynamic Links 設定 URI 前置字串,請在系統提示時完成這些步驟。

    如果您已有 Dynamic Links URI 前置字串,請記下該前置字串,您必須在程式輔助方式建立 Dynamic Links 時提供 Dynamic Links URI 前置字串。

  3. 建議:指定深層連結和備用連結中允許的網址模式。這樣一來,您就能防止未經授權的對象建立 Dynamic Links,從您的網域重新導向至您無法控管的網站。請參閱「許可清單網址模式」。

iOS

  1. Firebase 主控台中,開啟「Dynamic Links專區。
  2. 如果您尚未接受服務條款,並為 Dynamic Links 設定 URI 前置字串,請在系統提示時完成這些步驟。

    如果您已經有 Dynamic Links URI 前置字串,請記下來。使用程式輔助方式建立 Dynamic Links 時,您必須提供 Dynamic Links 網域。

  3. Firebase Dynamic Links C++ 用戶端程式庫會在 iOS 上使用自訂網址配置來處理連結。您必須在應用程式中新增自訂網址架構,才能支援接收 Dynamic Links
    1. 如要開啟專案設定,請在左側樹狀檢視畫面中雙擊專案名稱。從「TARGETS」專區選取應用程式,然後選取「Info」分頁標籤,並展開「URL Types」專區。
    2. 按一下「+」按鈕,然後為已反轉的用戶端 ID 新增網址配置。如要找出這個值,請開啟 GoogleService-Info.plist 設定檔,然後找出 REVERSED_CLIENT_ID 索引鍵。複製該鍵的值,然後貼到設定頁面中的「網址配置」方塊中。將其他欄位留白。
    3. 按一下 + 按鈕,然後新增第二個網址配置。這組 ID 與應用程式的軟體包 ID 相同。舉例來說,如果套件 ID 是 com.example.ios,請在「網址配置」方塊中輸入這個值。您可以在專案設定的「一般」分頁 (「Identity」>「Bundle Identifier」) 中找到應用程式的軟體包 ID。

使用 Firebase 控制台

如果您想產生單一 Dynamic Link (不論是為了測試目的,或是要為行銷團隊產生用於社群媒體貼文等項目的連結),最簡單的方法就是前往 Firebase 控制台,然後按照逐步表單手動建立。

自訂網域

您可以使用自己的網域 (而非 goo.glpage.link 子網域),進一步控管 Dynamic Link 的品牌形象。請按照這些操作說明為專案設定自訂網域。

使用 Firebase Dynamic Links API

建立及初始化應用程式

您必須先建立並初始化 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"));

初始化 Dynamic Links 程式庫

建立 Dynamic Link 之前,您必須先初始化 Dynamic Links 程式庫:

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

透過參數建立較長的 Dynamic Link

如要建立 Dynamic Link,請建立 DynamicLinkComponents 物件,並設定任何選用成員以進行其他設定,然後將其傳遞至 dynamic_links::GetShortLinkdynamic_links::GetLongLink

以下簡單範例會建立長的動態連結,連結至 https://www.example.com/,並透過 Android 應用程式 com.example.android.package_name 和 iOS 應用程式 com.example.ios 開啟:

firebase::dynamic_links::IOSParameters ios_parameters("com.example.ios");

firebase::dynamic_links::AndroidParameters android_parameters(
    "com.example.android.package_name");

firebase::dynamic_links::DynamicLinkComponents components(
    "https://www.example.com/", "example.page.link");
components.android_parameters = &android_parameters;
components.ios_parameters = &ios_parameters;

firebase::dynamic_links::GeneratedDynamicLink long_link =
    firebase::dynamic_links::GetLongLink(components);

建立 Shorts Dynamic Link

如要建立短 Dynamic Link,請將先前產生的長連結傳遞至 GetShortLink,或以上述方式建構 DynamicLinkComponents

GetShortLink 可選擇使用額外的 DynamicLinkOptions 設定參數和 PathLength;這可讓您控管連結產生方式。產生短網址時,系統必須向 Firebase 後端提出網路要求,因此 GetShortLink 為非同步,會傳回 Future<GeneratedLink>

例如:

firebase::dynamic_links::DynamicLinkOptions short_link_options;
short_link_options.path_length = firebase::dynamic_links::kPathLengthShort;

firebase::Future<firebase::dynamic_links::GeneratedDynamicLink> result =
    firebase::dynamic_links::GetShortLink(components, short_link_options);

如果程式有定期執行的更新迴圈 (例如每秒 30 或 60 次),您可以在每次更新後檢查一次結果:

if (result.status() == firebase::kFutureStatusComplete) {
  if (result.error() == firebase::dynamic_links::kErrorCodeSuccess) {
    firebase::dynamic_links::GeneratedDynamicLink link = *result.result();
    printf("Create short link succeeded: %s\n", link.url.c_str());
  } else {
    printf("Created short link failed with error '%s'\n",
           result.error_message());
  }
}