设置深度链接
深度链接能将用户导向应用中的特定事件或页面。此功能可确保用户被直接转到他们在智能横幅中看到的内容,打造流畅无缝的体验。智能横幅 SDK 支持纯字符串深度链接和包含占位符的深度链接模板。占位符由 SDK 使用深度链接上下文或网页 URL 的 GET 参数填充。
在智能横幅 SDK 中配置深度链接的方法有两种:
向
AdjustSmartBanner.init
函数发送参数。- 通过配置
context
对象提供上下文信息。
- 通过配置
调用
setAndroidDeepLinkPath
和setIosDeepLinkPath
setter。- 调用
setContext
setter 提供上下文 - 使用GET 参数提供上下文
- 调用
配置您的深度链接路径和上下文 setter
使用这些函数来配置您的深度链接并设置动态上下文。
设置深度链接路径
您必须使用setAndroidDeepLinkPath
和setIosDeepLinkPath
setter 函数为目标移动平台配置深度链接路径。这些函数接受一个字符串值,该值可以是绝对路径也可以是模板路径。
要设置深度链接路径,请使用各平台的事件或视图相关路径调用AdjustSmartBanner.setIosDeepLinkPath
和AdjustSmartBanner.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 参数作为上下文
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_id
和promo
的值。产生的深度链接路径为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" });