使用 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. 如要開啟專案設定,請在左側樹狀檢視畫面中,按兩下專案名稱。在「目標」部分選取應用程式,然後選取「資訊」分頁,並展開「網址類型」部分。
    2. 按一下 + 按鈕,然後為反向用戶端 ID 新增網址架構。如要找出這個值,請開啟GoogleService-Info.plist設定檔,然後尋找 REVERSED_CLIENT_ID 鍵。複製該金鑰的值,然後貼到設定頁面的「URL Schemes」(網址架構) 方塊中。將其他欄位留空。
    3. 按一下「+」按鈕,然後新增第二個網址架構。這個 ID 與應用程式的軟體包 ID 相同。舉例來說,如果您的套件 ID 是 com.example.ios,請在「網址架構」方塊中輸入該值。 您可以在專案設定的「一般」分頁中找到應用程式的軟體包 ID (「Identity」>「Bundle Identifier」)。

使用 Firebase 控制台

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

自訂網域

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

使用 Firebase Dynamic Links API

建立及初始化應用程式

如要建立 Dynamic Links,您必須先建立並初始化 firebase::App 物件。

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

#include "firebase/app.h"

後續步驟會因平台而異:

Android

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

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);

從參數建立 long 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

如要建立動態短連結,請將先前產生的長連結傳遞至 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());
  }
}