创建 Dynamic Links 动态链接(Flutter 应用)

您可以使用 Firebase Dynamic Links Builder API 创建短动态链接或长动态链接。此 API 接受一个长动态链接或一个包含动态链接参数的对象,并返回如下所示的网址:

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

您必须先安装 Firebase SDK,然后才能在您的 Android 应用中创建动态链接。如果您的应用已设置为接收动态链接,说明您已经完成了这些步骤,可以跳过这一部分。

  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. 如果您尚未为动态链接设置网域,请点击开始使用按钮并按照提示进行操作。

      如果您已经有了动态链接网域,请记下它。在以编程方式创建动态链接时,您需要提供动态链接网域。

    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 根据支持的参数来创建动态链接。请参阅 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 控制台中找到。动态链接网域类似于以下示例:
https://example.com/link
https://example.page.link
AndroidParameters
setFallbackUrl 在未安装应用时要打开的链接。指定此链接是为了在用户未安装应用时完成一些不同于从 Play 商店安装您的应用的任务,比如打开内容的移动网页版或显示您的应用的宣传页面。
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 与此链接关联的图片的网址。该图片的尺寸应至少为 300x200 像素,且小于 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。