Catch up on highlights from Firebase at Google I/O 2023. Learn more

在 Flutter 應用中創建動態鏈接

您可以使用 Firebase Dynamic Links Builder API 創建短動態鏈接或長動態鏈接。此 API 接受長動態鏈接或包含動態鏈接參數的對象,並返回如下例所示的 URL:

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

在您的 Android 應用程序中創建動態鏈接之前,您必須包含 Firebase SDK。如果您的應用設置為接收動態鏈接,則您已完成這些步驟,可以跳過此部分。

  1. 如果您還沒有安裝並初始化 Firebase SDKs for Flutter,請執行此操作。

  2. 在 Flutter 項目的根目錄中,運行以下命令來安裝動態鏈接插件:

    flutter pub add firebase_dynamic_links
    
  3. 如果您正在構建 Android 應用程序,請打開 Firebase 控制台的項目設置頁面並確保您已指定 SHA-1 簽名密鑰。如果您使用 App Links,還請指定您的 SHA-256 密鑰。

  4. 在 Firebase 控制台中,打開動態鏈接部分。

    1. 如果您尚未為動態鏈接設置域,請單擊“開始”按鈕並按照提示進行操作。

      如果您已有動態鏈接域,請記下它。以編程方式創建動態鏈接時,您需要提供動態鏈接域。

    2. 推薦:從“更多”(⋮) 菜單中,指定深層鏈接和後備鏈接中允許的 URL 模式。這樣做可以防止未經授權的各方創建從您的域重定向到不受您控制的網站的動態鏈接。

      請參閱允許特定的 URL 模式

要創建動態鏈接,請創建一個新的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 來創建具有任何受支持參數的動態鏈接。請參閱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);

您可以使用以下方法設置動態鏈接參數:

動態鏈接參數
設置鏈接您的應用程序將打開的鏈接。指定您的應用程序可以處理的 URL,通常是應用程序的內容或負載,它會啟動特定於應用程序的邏輯(例如向用戶提供優惠券或顯示歡迎屏幕)。此鏈接必須是格式正確的 URL,經過正確的 URL 編碼,使用 HTTP 或 HTTPS,並且不能是另一個動態鏈接。
設置域名 UriPrefix您的動態鏈接網址前綴,您可以在 Firebase 控制台中找到它。動態鏈接域類似於以下示例:
https://example.com/link
https://example.page.link
安卓參數
setFallbackUrl未安裝應用程序時打開的鏈接。指定此項以在未安裝應用程序時執行除從 Play 商店安裝應用程序以外的操作,例如打開內容的移動網絡版本,或顯示應用程序的促銷頁面。
設置最低版本可以打開鏈接的應用程序的最低版本的版本代碼。如果安裝的應用程序是舊版本,用戶將被帶到 Play 商店升級應用程序。
Ios參數
設置AppStoreId您應用的 App Store ID,用於在未安裝應用時將用戶引導至 App Store
setFallbackUrl未安裝應用程序時打開的鏈接。指定此選項以在未安裝應用程序時執行除從 App Store 安裝應用程序之外的操作,例如打開內容的移動網絡版本,或顯示應用程序的促銷頁面。
設置自定義方案您應用的自定義 URL 方案(如果定義為您應用的捆綁包 ID 以外的內容)
setIpadFallbackUrl未安裝應用程序時在 iPad 上打開的鏈接。指定此選項以在未安裝應用程序時執行除從 App Store 安裝應用程序之外的操作,例如打開內容的 Web 版本,或顯示應用程序的促銷頁面。
設置IpadBundleId在 iPad 上用於打開鏈接的 iOS 應用程序的包 ID。該應用程序必須從 Firebase 控制台的概覽頁面連接到您的項目。
設置最低版本可以打開鏈接的應用程序的最低版本號。此標誌在打開時傳遞給您的應用程序,您的應用程序必須決定如何處理它。
導航信息參數
setForcedRedirectEnabled如果設置為“1”,則在打開動態鏈接時跳過應用程序預覽頁面,而是重定向到應用程序或商店。應用預覽頁面(默認啟用)可以更可靠地將用戶在應用中打開動態鏈接時發送到最合適的目的地;但是,如果您希望僅在無需此頁面即可可靠打開動態鏈接的應用程序中打開動態鏈接,則可以使用此參數禁用它。此參數僅會影響動態鏈接在 iOS 上的行為。
社交元標籤參數
設置標題在社交帖子中共享動態鏈接時使用的標題。
設置說明在社交帖子中共享動態鏈接時使用的描述。
設置圖片網址與此鏈接相關的圖像的 URL。圖片應至少為 300x200 像素,且小於 300 KB。
谷歌分析參數
設置來源
設置介質
設置活動
設置期限
設置內容
Google Play 分析參數。這些參數(`utm_source`、`utm_medium`、`utm_campaign`、`utm_term`、`utm_content`)被傳遞到 Play Store 並附加到鏈接負載。
ItunesConnectAnalytics參數
設置提供者令牌
setAffiliateToken
設置CampaignToken
iTunes Connect 分析參數。這些參數(`pt`、`at`、`ct`)被傳遞到 App Store。