创建动态链接 (Unity)

您可以使用 Firebase Dynamic Links API 创建短或长 Dynamic Links。该 API 采用若干个可选的参数结构来构建链接。您也可以基于以前生成的长链接来创建短链接。Dynamic Links API 将生成一个如下所示的网址:

https://example.page.link/aSDf

准备工作

在使用 Firebase Dynamic Links 之前,您需要:

  • 注册 Unity 项目并将其配置为使用 Firebase。

    • 如果您的 Unity 项目已在使用 Firebase,那么该项目已经注册并已配置为使用 Firebase。

    • 如果您没有 Unity 项目,则可以下载示例应用

  • Firebase Unity SDK(具体而言是 FirebaseDynamicLinks.unitypackage)添加到您的 Unity 项目中。

请注意,为了将 Firebase 添加到 Unity 项目,需要在 Firebase 控制台中和打开的 Unity 项目中执行若干任务(例如,从控制台下载 Firebase 配置文件,然后将配置文件移到 Unity 项目中)。

设置 Dynamic Links URI 前缀

  1. Firebase 控制台中,打开 Dynamic Links 部分。

  2. 如果您尚未接受服务条款并为 Dynamic Links 设置 URI 前缀,请在收到提示时执行相关操作。

    如果您已有 Dynamic Links URI 前缀,请记下它。在以编程方式创建 Dynamic Links 时,您需要提供 Dynamic Links URI 前缀。

  3. 推荐:指定可以在您的深层链接和后备链接中使用的网址格式。这样做可以防止未经授权者创建 Dynamic Links,从您的网域重定向至您无法控制的网站。请参阅白名单网址格式

使用 Firebase 控制台

如果您想生成一个 Dynamic Link(无论是出于测试目的,还是为了让您的营销团队轻松创建可以在社交媒体帖子等地方使用的链接),最简单的方法就是访问 Firebase 控制台并按照分步说明手动创建一个。

自定义网域

您可以使用自己的网域(而非 goo.glpage.link 子网域)来更好地控制 Dynamic Link 的品牌塑造。请按照这些说明为项目设置自定义网域。

使用 Firebase Dynamic Links API

使用参数创建长 Dynamic Link

如需创建动态链接,请创建一个 DynamicLinkComponents 对象,设置任何用于额外配置的可选成员,然后访问 LongDynamicLink 属性以获取链接网址。

下面这个极为简单的示例创建了一个指向 https://www.example.com/ 的长动态链接,此链接会在您的 Android 应用 com.example.android(在 Android 上)和 iOS 应用 com.example.ios(在 iOS 上)中打开:

var components = new Firebase.DynamicLinks.DynamicLinkComponents(
    // The base Link.
    new System.Uri("https://www.example.com/"),
    // The dynamic link URI prefix.
    "https://example.page.link") {
      IOSParameters = new Firebase.DynamicLinks.IOSParameters("com.example.ios"),
      AndroidParameters = new Firebase.DynamicLinks.AndroidParameters(
        "com.example.android.package_name"),
    };
// do something with: components.LongDynamicLink

创建短 Dynamic Link

如需创建短动态链接,请将之前生成的长链接传递给 Firebase.DynamicLinks.GetShortLinkAsync,或采用与上面相同的方式构建 DynamicLinkComponents

GetShortLinkAsync 可以选择性地接受包含 PathLength 属性的额外 DynamicLinkOptions 配置参数,从而让您控制链接的生成方式。生成短链接需要向 Firebase 后端发出网络请求,因此,GetShortLinkAsync 方法是异步执行的。GetShortLinkAsync 会返回 Task<Firebase.DynamicLinks.ShortDynamicLink>

例如:

var options = new Firebase.DynamicLinks.DynamicLinkOptions {
  PathLength = DynamicLinkPathLength.Unguessable
};

Firebase.DynamicLinks.DynamicLinks.GetShortLinkAsync(components, options).ContinueWith(task => {
  if (task.IsCanceled) {
    Debug.LogError("GetShortLinkAsync was canceled.");
    return;
  }
  if (task.IsFaulted) {
    Debug.LogError("GetShortLinkAsync encountered an error: " + task.Exception);
    return;
  }

  // Short Link has been created.
  Firebase.DynamicLinks.ShortDynamicLink link = task.Result;
  Debug.LogFormat("Generated short link {0}", link.Url);

  var warnings = new System.Collections.Generic.List<string>(link.Warnings);
  if (warnings.Count > 0) {
    // Debug logging for warnings generating the short link.
  }
});

上述示例使用了 lambda 表达式,该表达式在任务完成时触发。