在 Flutter 應用程式中建立 Dynamic Links

您可以使用 Firebase Dynamic Links Builder API 建立短或長的 Dynamic Links。這個 API 可接受長的動態連結或包含動態連結參數的物件,並傳回網址,範例如下:

https://example.com/link/WXYZ
https://example.page.link/WXYZ

您必須先加入 Firebase SDK,才能在 Android 應用程式中建立 Dynamic Links。如果您的應用程式已設為接收 Dynamic Links,則您已完成這些步驟,因此可略過這一節。

  1. 如果您尚未安裝並初始化 Flutter 專用的 Firebase SDK,請先完成安裝。

  2. 在 Flutter 專案的根目錄中執行下列指令,安裝 Dynamic Links 外掛程式:

    flutter pub add firebase_dynamic_links
    
  3. 如果您正在建構 Android 應用程式,請開啟 Firebase 控制台的「Project settings」(專案設定) 頁面,並確認您已指定 SHA-1 簽署金鑰。如果您使用應用程式連結,請一併指定 SHA-256 金鑰。

  4. 在 Firebase 控制台中,開啟「Dynamic Links」(動態連結) 區段。

    1. 如果您尚未為 Dynamic Links 設定網域,請按一下「Get Started」按鈕並按照提示操作。

      如果您已經有 Dynamic Links 網域,請加以記下。透過程式輔助方式建立 Dynamic Links 時,您必須提供 Dynamic Links 網域。

    2. 建議做法:透過「更多」(⋮) 選單,指定深層連結和備用連結允許的網址模式。這樣一來,就能防止未經授權的對象建立動態連結,將該網域重新導向到由您控管的網站。

      請參閱允許特定網址模式

如要建立動態連結,請建立新的 DynamicLinkParameters 物件並傳遞至 buildLink()buildShortLink()

下列最簡單的範例會建立指向 https://www.example.com/ 的長動態連結,在 Android 上使用 com.example.app.android 和 iOS 應用程式 com.example.app.ios 開啟:

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(packageName: "com.example.app.android"),
  iosParameters: const IOSParameters(bundleId: "com.example.app.ios"),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildLink(dynamicLinkParams);

如要建立簡短動態連結,請將 DynamicLinkParameters 物件傳遞至 buildShortLink()。必須進行網路呼叫,才能建構短連結。例如:

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(packageName: "com.example.app.android"),
  iosParameters: const IOSParameters(bundleId: "com.example.app.ios"),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);

根據預設,產生的短版 Dynamic Links 包含後置字元只有幾個字元。雖然這可以讓連結更精簡,但也可能導致使用者猜測有效的短連結。這種做法通常不會造成傷害,因為連結會導向公開資訊。

不過,如果短連結會導向使用者的資訊,您應建立長度為 17 個字元的加長連結,這樣他人就不太可能猜到有效的動態連結。方法是將 ShortDynamicLinkType.unguessable 傳遞至 buildShortLink() 方法:

final unguessableDynamicLink = await FirebaseDynamicLinks.instance.buildShortLink(
    dynamicLinkParams,
    shortLinkType: ShortDynamicLinkType.unguessable,
);

您可以使用 Dynamic Link Builder API 使用任何支援的參數建立 Dynamic Links。請參閱 API 參考資料

下例會使用幾個常用參數集建立動態連結:

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(
    packageName: "com.example.app.android",
    minimumVersion: 30,
  ),
  iosParameters: const IOSParameters(
    bundleId: "com.example.app.ios",
    appStoreId: "123456789",
    minimumVersion: "1.0.1",
  ),
  googleAnalyticsParameters: const GoogleAnalyticsParameters(
    source: "twitter",
    medium: "social",
    campaign: "example-promo",
  ),
  socialMetaTagParameters: SocialMetaTagParameters(
    title: "Example of a Dynamic Link",
    imageUrl: Uri.parse("https://example.com/image.png"),
  ),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);

您可以使用下列方法設定動態連結參數:

DynamicLink 參數
setLink 應用程式會開啟的連結。請指定應用程式可處理的網址,通常是應用程式的內容或酬載,以便啟動應用程式專屬的邏輯 (例如運用優待券獎勵使用者,或顯示歡迎畫面)。這個連結必須是格式正確的網址、採用 HTTP 或 HTTPS 的正確網址編碼,且不得使用其他動態連結。
setDomainUriPrefix 動態連結網址前置字串,可在 Firebase 控制台中找到。Dynamic Link 網域如以下範例所示:
https://example.com/link
https://example.page.link
Android 參數
setFallbackUrl 未安裝應用程式時開啟的連結。除了從 Play 商店安裝應用程式之外,指定這項步驟只能執行其他操作,例如開啟行動版網站內容,或顯示應用程式的宣傳頁面。
setMinimumVersion 可開啟連結的應用程式最低版本代碼。如果安裝的應用程式是較舊的版本,系統會引導使用者前往 Play 商店升級應用程式。
iOS 參數
setAppStore ID 應用程式的 App Store ID,用於在使用者未安裝應用程式時將使用者導向 App Store
setFallbackUrl 未安裝應用程式時開啟的連結。除了從 App Store 安裝應用程式之外,請指定這項要採用的處理方式,例如開啟行動版網站的內容版本,或顯示應用程式的宣傳頁面。
setCustomScheme 應用程式的自訂網址通訊協定 (如果定義並非應用程式軟體包 ID)
setIpadFallbackUrl 未安裝應用程式時,在 iPad 上開啟的連結。除了從 App Store 安裝應用程式之外,請指定這項額外操作,例如開啟網頁內容或顯示應用程式的宣傳頁面。
setIpadBundleId 要在 iPad 上開啟連結的 iOS 應用程式軟體包 ID。應用程式必須在 Firebase 控制台的「總覽」頁面中,連結至您的專案。
setMinimumVersion 可開啟連結的應用程式最低版本號碼。此標記會在應用程式開啟時傳遞至應用程式,而應用程式必須決定使用方式。
NavigationInfo 參數
setForcedRedirectEnabled 如果設為「1」,請在開啟動態連結時略過應用程式預覽頁面,改為重新導向至應用程式或商店。使用者在應用程式中開啟 Dynamic Links 時,應用程式預覽頁面 (預設為啟用) 就能更穩定地將他們導向最適當的目的地;不過,如果您預期在沒有這個頁面的情況下能夠順利開啟 Dynamic Links 應用程式,可以使用這個參數停用動態連結。這個參數只會影響動態連結在 iOS 上的行為。
SocialMetaTagParameters
設定標題 在社群媒體貼文中分享 Dynamic Link 時使用的標題。
setDescription 在社群媒體貼文中分享 Dynamic Link 時使用的說明。
setImageUrl 這個連結相關圖片的網址。圖片不得小於 300 x 200 像素,且小於 300 KB。
GoogleAnalytics (分析) 參數
setSource
setMedium
setCampaign
setTerm
setContent
Google Play 數據分析參數。這些參數 (`utm_source`、`utm_medium`、`utm_campaign`、`utm_term`、`utm_content`) 會傳遞至 Play 商店,並附加至連結酬載。
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
iTunes 連結數據分析參數。這些參數 (`pt`、`at`、`ct`) 會傳遞到 App Store。