您可以使用 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
- 在 Firebase 控制台中,開啟 Dynamic Links 專區。
如果尚未接受服務條款並為 Dynamic Links 設定 URI 前置字元,請在系統提示時完成這些步驟。
如果您已有 Dynamic Links URI 前置字串,請記下該字串。以程式輔助方式建立 Dynamic Links 時,您需要提供 Dynamic Links URI 前置字串。
- 建議:指定可在深層連結和備用連結中使用的網址模式。這麼做可防止未經授權的第三方建立 Dynamic Links,從您的網域重新導向至您無法控管的網站。請參閱「允許特定網址模式」。
iOS
- 在 Firebase 控制台中,開啟 Dynamic Links 專區。
如果尚未接受服務條款並為 Dynamic Links 設定 URI 前置字元,請在系統提示時完成這些步驟。
如果您已有 Dynamic Links URI 前置字串,請記下該字串。以程式輔助方式建立 Dynamic Links 時,您需要提供 Dynamic Links 網域。
- Firebase Dynamic Links C++ 用戶端程式庫會在 iOS 上使用自訂網址配置處理連結。您必須在應用程式中新增自訂網址架構,才能支援接收 Dynamic Links:
- 如要開啟專案設定,請在左側樹狀檢視畫面中,按兩下專案名稱。在「目標」部分選取應用程式,然後選取「資訊」分頁,並展開「網址類型」部分。
- 按一下 + 按鈕,然後為反向用戶端 ID 新增網址架構。如要找出這個值,請開啟
設定檔,然後尋找GoogleService-Info.plist REVERSED_CLIENT_ID
鍵。複製該金鑰的值,然後貼到設定頁面的「URL Schemes」(網址架構) 方塊中。將其他欄位留空。 - 按一下「+」按鈕,然後新增第二個網址架構。這個 ID 與應用程式的軟體包 ID 相同。舉例來說,如果您的套件 ID 是
com.example.ios
,請在「網址架構」方塊中輸入該值。 您可以在專案設定的「一般」分頁中找到應用程式的軟體包 ID (「Identity」>「Bundle Identifier」)。
使用 Firebase 控制台
如要產生單一 Dynamic Link (無論是為了測試,或是讓行銷團隊輕鬆建立連結,以便用於社群媒體貼文等),最簡單的方法就是前往 Firebase 控制台,然後按照逐步表單手動建立。
自訂網域
使用自己的網域,而非 goo.gl
或 page.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::GetShortLink
或 dynamic_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()); } }