在 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 上開啟的連結。指定此項目,可在應用程式未安裝時執行安裝以外的動作,例如開啟內容的網頁版,或顯示應用程式的宣傳頁面。
setIpadBundleId 在 iPad 上開啟連結時使用的 iOS 應用程式套件 ID。應用程式必須從 Firebase 控制台的「總覽」頁面連結至專案。
setMinimumVersion 可開啟連結的應用程式最低版本號碼。開啟應用程式時,系統會將這個標記傳遞給應用程式,應用程式必須決定如何處理。
NavigationInfoParameters
setForcedRedirectEnabled 如果設為「1」,開啟動態連結時會略過應用程式預覽頁面,直接重新導向至應用程式或商店。應用程式預覽頁面 (預設為啟用) 可在使用者於應用程式中開啟 Dynamic Links 時,更可靠地將他們帶往最合適的目的地;不過,如果您希望 Dynamic Link 只能在可穩定開啟 Dynamic Links 的應用程式中開啟,且不需要這個頁面,可以使用這個參數停用預覽頁面。這個參數只會影響 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。