在 Flutter 应用中创建动态链接

您可以使用 Firebase Dynamic Links Builder API 创建短动态链接或长动态链接。此 API 接受长动态链接或包含动态链接参数的对象,并返回类似于以下示例的 URL:

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

在您的 Android 应用中创建动态链接之前,您必须包含 Firebase SDK。如果您的应用设置为接收动态链接,则您已经完成了这些步骤,您可以跳过此部分。

  1. 如果您尚未安装并初始化 Flutter 的 Firebase SDK

  2. 在 Flutter 项目的根目录中,运行以下命令来安装 Dynamic Links 插件:

    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,并且不能是另一个动态链接。
setDomainUriPrefix您可以在 Firebase 控制台中找到您的动态链接网址前缀。动态链接域类似于以下示例:
https://example.com/link
https://example.page.link
安卓参数
setFallbackUrl未安装应用程序时打开的链接。指定此项以在未安装应用程序时从 Play 商店安装应用程序以外的其他操作,例如打开内容的移动 Web 版本,或显示应用程序的促销页面。
设置最小版本可以打开链接的应用的最低版本的 versionCode。如果安装的应用程序是旧版本,则用户将被带到 Play 商店以升级应用程序。
IOS参数
设置AppStoreId您应用的 App Store ID,用于在未安装应用时将用户引导至 App Store
setFallbackUrl未安装应用程序时打开的链接。指定此项以在未安装应用程序时从 App Store 安装应用程序以外的其他操作,例如打开内容的移动 Web 版本,或显示应用程序的促销页面。
设置自定义方案您的应用的自定义 URL 方案(如果定义为您的应用的捆绑包 ID 以外的内容)
setIpadFallbackUrl未安装应用程序时在 iPad 上打开的链接。指定此项以在未安装应用程序时从 App Store 安装应用程序以外的其他操作,例如打开内容的 Web 版本,或显示应用程序的促销页面。
setIpadBundleId用于在 iPad 上打开链接的 iOS 应用程序的捆绑包 ID。该应用必须从 Firebase 控制台的概览页面连接到您的项目。
设置最小版本可以打开链接的应用的最低版本号。此标志在打开时传递给您的应用程序,您的应用程序必须决定如何处理它。
导航信息参数
setForcedRedirectEnabled如果设置为“1”,则在打开动态链接时跳过应用预览页面,而是重定向到应用或商店。应用预览页面(默认启用)在用户打开应用中的动态链接时,可以更可靠地将用户引导至最合适的目的地;但是,如果您希望仅在可以在没有此页面的情况下可靠地打开动态链接的应用中打开动态链接,则可以使用此参数禁用它。此参数只会影响动态链接在 iOS 上的行为。
社交元标记参数
设置标题在社交帖子中共享动态链接时使用的标题。
设置描述在社交帖子中共享动态链接时使用的描述。
设置图片网址与此链接相关的图像的 URL。图片至少应为 300x200 像素,且小于 300 KB。
谷歌分析参数
设置源
设置中
设置活动
设置期限
设置内容
谷歌播放分析参数。这些参数(`utm_source`、`utm_medium`、`utm_campaign`、`utm_term`、`utm_content`)被传递到 Play 商店并附加到链接有效负载中。
iTunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
iTunes Connect 分析参数。这些参数(`pt`、`at`、`ct`)被传递到 App Store。