使用 C++ 建立動態鏈接

您可以使用 Firebase 動態連結 API 建立短動態連結或長動態連結。此 API 採用多個可選參數結構來建立連結。也可以從先前產生的長連結建立短連結。 Firebase 動態連結產生如下 URL:

https://example.page.link/WXYZ

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

在你開始之前

在使用Firebase 動態連結之前,您需要:

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

    如果您的 C++ 專案已使用 Firebase,則它已針對 Firebase 進行註冊和設定。

  • Firebase C++ SDK加入到您的 C++ 專案。

請注意,將 Firebase 新增至 C++ 專案涉及Firebase 控制台和開啟的 C++ 專案中的任務(例如,從控制台下載 Firebase 設定文件,然後將它們移至 C++ 專案中)。

安卓

  1. 在 Firebase 控制台中,開啟動態連結部分。
  2. 如果您尚未接受服務條款並為動態連結設定 URI 前綴,請在出現提示時執行此操作。

    如果您已有動態連結 URI 前綴,請記下它。以程式設計方式建立動態連結時,您需要提供動態連結 URI 前綴。

  3. 推薦:指定深層連結和後備連結中允許的 URL 模式。透過這樣做,您可以防止未經授權的各方建立從您的網域重定向到您無法控制的網站的動態連結。請參閱白名單 URL 模式

iOS系統

  1. 在 Firebase 控制台中,開啟動態連結部分。
  2. 如果您尚未接受服務條款並為動態連結設定 URI 前綴,請在出現提示時執行此操作。

    如果您已有動態連結 URI 前綴,請記下它。以程式設計方式建立動態連結時,您需要提供動態連結網域。

  3. Firebase 動態連結 C++ 用戶端程式庫在 iOS 上使用自訂 URL 方案來處理連結。您必須將自訂 URL 方案新增至您的應用程式以支援接收動態連結:
    1. 若要開啟專案配置,請雙擊左側樹視圖中的項目名稱。從“目標”部分選擇您的應用程序,然後選擇“資訊”選項卡,並展開“URL 類型”部分。
    2. 按一下+按鈕,並為反向用戶端 ID 新增 URL 方案。若要尋找此值,請開啟GoogleService-Info.plist設定文件,然後尋找REVERSED_CLIENT_ID鍵。複製該鍵的值,並將其貼上到設定頁面上的URL 方案框中。將其他欄位留空。
    3. 按一下+按鈕,然後新增第二個 URL 方案。該 ID 與您的應用程式的捆綁包 ID 相同。例如,如果您的捆綁包 ID 是com.example.ios ,請在URL 方案框中鍵入該值。您可以在專案配置的「常規」標籤( 「身分」>「捆綁包識別碼」)中找到應用程式的捆綁包 ID。

使用 Firebase 控制台

如果您想生成單個動態鏈接,無論是出於測試目的,還是讓您的營銷團隊輕鬆創建可在社交媒體帖子等內容中使用的鏈接,最簡單的方法是訪問Firebase 控制台並創建一個手動按照分步表格操作。

自訂域

透過使用您自己的網域而不是goo.glpage.link子網域,您可以更好地控制動態連結的品牌。請按照以下說明為您的專案設定自訂網域。

使用 Firebase 動態連結 API

創建並初始化App

在建立動態連結之前,您需要建立並初始化一個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);

iOS系統

創建firebase::App

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

初始化動態連結函式庫

在建立動態連結之前,必須先初始化動態連結函式庫:

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

從參數建立長動態鏈接

要建立動態鏈接,請建立一個 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);

建立短動態鏈接

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