设置深度链接

深度链接能将用户导向应用中的特定事件或页面。此功能可确保用户被直接转到他们在智能横幅中看到的内容,打造流畅无缝的体验。智能横幅 SDK 支持纯字符串深度链接和包含占位符的深度链接模板。占位符由 SDK 使用深度链接上下文或网页 URL 的 GET 参数填充。

在智能横幅 SDK 中配置深度链接的方法有两种:

配置您的深度链接路径和上下文 setter

使用这些函数来配置您的深度链接并设置动态上下文。

设置深度链接路径

您必须使用setAndroidDeepLinkPathsetIosDeepLinkPath setter 函数为目标移动平台配置深度链接路径。这些函数接受一个字符串值,该值可以是绝对路径也可以是模板路径。

要设置深度链接路径,请使用各平台的事件或视图相关路径调用AdjustSmartBanner.setIosDeepLinkPathAdjustSmartBanner.setAndroidDeepLinkPath函数。

AdjustSmartBanner.setIosDeepLinkPath(
   "products/jeans/?product=cool-jeans&promo=spring_10"
);

深度链接路径可以包含任意数量的位于大括号内的参数。

AdjustSmartBanner.setIosDeepLinkPath(
   "products/{category}/?product={product_id}&promo={promo}"
);

智能横幅 SDK 会使用上下文中的值替换这些参数:

设置深度链接上下文

您可以用包含上下文值键值对的对象调用AdjustSmartBanner.setContext函数来添加深度链接上下文。

AdjustSmartBanner.setContext({
   category: "jeans",
   product_id: "cool-jeans",
   promo: "spring_10",
});

智能横幅 SDK 会把所有能与上下文键匹配的占位符替换为对应的上下文值。

在此示例中,生成的 iOS 深度链接路径为products/jeans/?product=cool-jeans&promo=spring_10

AdjustSmartBanner.setIosDeepLinkPath(
   "products/{category}/?product={product_id}&promo={promo}"
);
AdjustSmartBanner.setContext({
   category: "jeans",
   product_id: "cool-jeans",
   promo: "spring_10",
});
重要提示:
如果未在 context 值中找到匹配键,智能横幅 SDK 会尝试使用当前 URL 的 GET 参数值。如果未找到匹配参数,则使用空字符串。

在此示例中,产生的安卓深度链接路径为products/jeans/?product=&promo=

AdjustSmartBanner.setAndroidDeepLinkPath(
   "products/{category}/?product={product_id}&promo={promo}"
);
AdjustSmartBanner.setContext({ category: "jeans" });
重要提示:
setContext 方法会覆盖最后保留的上下文。您应当将所有必要参数组合在一个context对象中,而不是多次调用该方法。

在此示例中,对setContext的第二次调用会覆盖第一次调用的上下文。得出的深度链接路径为products//?product_id=blue_jeans,因为不匹配的{category}参数已被空白字符串替换。

AdjustSmartBanner.setIosDeepLinkPath("products/{category}/?product={product_id}");
AdjustSmartBanner.setContext({ category: "jeans" });
AdjustSmartBanner.setContext({ product_id: "blue_jeans" });

在本示例中,上下文已正确设置,生成的深度链接路径为products/shoes/?product=red-sneakers

AdjustSmartBanner.setIosDeepLinkPath("products/{category}/?product={product_id}");
AdjustSmartBanner.setContext({
   category: "shoes",
   product_id: "red-sneakers",
});

使用 GET 参数作为上下文

重要提示:
如果您的网页应用是 SPA (单页应用),SDK 则无法检测到 URL 的变更。为确保您始终读取当前 URL 的值,请在路由发生变化时调用 AdjustSmartBanner.show()

如果深度链接路径中的任何参数在context中缺失,SDK 就会尝试使用当前页面 URL 中的参数。

在以下示例中:

  • category参数使用setContext setter 方法中提供的值填充。
  • 当前页 URL 为https://my-shop.com/spring-promo?product_id=cool-jeans&promo=spring_10

SDK 会从页面 URL 中读取product_idpromo的值。产生的深度链接路径为products/jeans/?product=cool-jeans&promo=spring_10

AdjustSmartBanner.setAndroidDeepLinkPath(
   "products/{category}/?product={product_id}&promo={promo}"
);
AdjustSmartBanner.setContext({ category: "jeans" });
重要提示:
通过 setContext setter 或init方法传递的context值始终优先于链接中的 GET 参数。

在以下示例中:

  • product_id参数由setContext setter 设置。
  • 当前页 URL 为https://my-shop.com/spring-promo?product_id=cool-jeans&promo=spring_10

product_id值由setContext setter 设置,因此 URL 参数中的值会被覆盖。产生的深度链接路径为products/jeans/?product=floral-jeans&promo=spring_10

AdjustSmartBanner.setAndroidDeepLinkPath(
   "products/jeans/?product={product_id}&promo={promo}"
);
AdjustSmartBanner.setContext({ product_id: "floral-jeans" });