在 Flutter 應用程式中建立 Dynamic Links

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

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

您必須先加入 Firebase SDK,才能在 Android 應用程式中建立 Dynamic Links。如果應用程式已設定為接收動態連結,您就已完成這些步驟,可以略過本節。

  1. 如果尚未安裝並初始化 Flutter 適用的 Firebase SDK,請先完成這項操作。

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

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

  4. 在 Firebase 控制台中,開啟「Dynamic Links」部分。

    1. 如果您尚未為動態連結設定網域,請按一下「開始使用」按鈕,然後按照提示操作。

      如果您已有 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);

根據預設,系統會產生短網址,且後置字串只有幾個字元。雖然這樣可以縮短連結,但也有可能讓有心人士猜出有效的短連結。通常來說,這類連結會導向公開資訊,因此不會造成任何危害。

不過,如果短連結會導向使用者專屬資訊,建議您建立較長的連結,並加上 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);

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

Dynamic Link 參數
setLink 應用程式將開啟的連結。指定應用程式可處理的網址,通常是應用程式的內容或酬載,可啟動應用程式專屬的邏輯 (例如向使用者提供優待券或顯示歡迎畫面)。這個連結必須是格式正確的網址、經過適當的網址編碼、使用 HTTP 或 HTTPS,且不得為其他動態連結。
setDomainUriPrefix 您的動態連結網址前置字串 (可在 Firebase 控制台中找到)。動態連結網域範例如下:
https://example.com/link
https://example.page.link
AndroidParameters
setFallbackUrl 應用程式未安裝時要開啟的連結。指定這個動作,在應用程式未安裝時執行安裝以外的動作,例如開啟內容的行動版網頁,或顯示應用程式的宣傳頁面。
setMinimumVersion 可開啟連結的應用程式最低版本 versionCode。如果安裝的應用程式版本較舊,系統會將使用者帶往 Play 商店升級應用程式。
IosParameters
setAppStoreId 應用程式的 App Store ID,用於在應用程式未安裝時將使用者導向 App Store
setFallbackUrl 應用程式未安裝時要開啟的連結。如果應用程式未安裝,請指定此項目,以便執行從 App Store 安裝應用程式以外的動作,例如開啟內容的行動版網頁,或顯示應用程式的宣傳頁面。
setCustomScheme 應用程式的自訂網址通訊協定 (如果定義為應用程式軟體包 ID 以外的項目)
setIpadFallbackUrl 應用程式未安裝時,在 iPad 上開啟的連結。如果應用程式未安裝,您可以指定此屬性,執行從 App Store 安裝應用程式以外的動作,例如開啟內容的網頁版,或顯示應用程式的宣傳頁面。
setIpadBundleId 在 iPad 上開啟連結時使用的 iOS 應用程式套裝組合 ID。應用程式必須從 Firebase 控制台的「總覽」頁面連結至專案。
setMinimumVersion 可開啟連結的應用程式最低版本號碼。開啟應用程式時,系統會將這個標記傳遞給應用程式,應用程式必須決定如何處理。
NavigationInfoParameters
setForcedRedirectEnabled 如果設為「1」,系統會在開啟動態連結時略過應用程式預覽頁面,並改為重新導向至應用程式或商店。應用程式預覽頁面 (預設為啟用) 可在使用者於應用程式中開啟動態連結時,更可靠地將他們帶往最合適的目的地;不過,如果您希望動態連結只在可開啟動態連結的應用程式中開啟,且不需要這個頁面,可以使用這個參數停用預覽頁面。這個參數只會影響 iOS 上的動態連結行為。
SocialMetaTagParameters
setTitle 在社群媒體貼文中分享動態連結時使用的標題。
setDescription 在社群媒體貼文中分享動態連結時使用的說明。
setImageUrl 與這個連結相關的圖片網址。圖片尺寸至少須為 300 x 200 像素,且不得超過 300 KB。
GoogleAnalyticsParameters
setSource
setMedium
setCampaign
setTerm
setContent
Google Play 數據分析參數。這些參數 (`utm_source`、`utm_medium`、`utm_campaign`、`utm_term`、`utm_content`) 會傳遞至 Play 商店,並附加至連結酬載。
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
iTunes Connect 數據分析參數。這些參數 (`pt`、 `at`、`ct`) 會傳送至 App Store。