深度链接是一种 URI (统一资源标志符,Uniform Resource Identifier),能将用户带到应用中的特定页面,在用户与链接互动后直接呈现相关内容,优化用户体验。
根据用户是否已经安装您的应用,针对 Adobe Experience SDK 的 Adjust Android Extension 支持两种类型的深度链接:
- 直接深度链接 :如果用户已经安装了您的应用,那么链接就会打开指定页面。
- 延迟深度链接 :如果用户尚未安装您的应用,链接会将用户转到应用商店进行安装。安装后,应用会打开指定页面。
使用直接深度链接再归因用户
您可以向 Adjust 发送深度链接信息,来对用户进行再归因。当用户与深度链接交互时,您可以将这些数据发送给 Adjust,更新用户的归因信息。
-
首先,使用您的深度链接 URI 创建一个
AdjustDeeplink实例。AdjustDeeplink类会验证该 URI,并检查格式化字符串,以确保处理成功。 -
然后调用
Adjust.processDeeplink函数来处理深度链接,并将信息发送至 Adjust。
AdjustDeeplink 类构造函数需要以下参数:
url:Uri-
打开应用的深度链接 URI。
Adjust.processDeeplink 函数需要以下参数:
adjustDeeplink:AdjustDeeplink-
您创建的
AdjustDeeplink实例。 context:Context-
应用程序的上下文。
延迟深度链接回传
针对 Adobe Experience SDK 的 Adjust Android Extension 默认自动打开延迟深度链接。要控制此行为,或在深度链接打开之前进行验证,请配置扩展,在通过延迟深度链接打开应用时调用一个函数。
- 在
AdjustAdobeExtensionConfig实例上调用setOnDeferredDeeplinkResponseListener。 - 调用
AdjustAdobeExtension.setConfiguration进行设置的配置。
OnDeferredDeeplinkResponseListener 函数需要以下参数:
onDeferredDeeplinkResponseListener:OnDeferredDeeplinkResponseListener-
返回
boolean值的函数。如果该函数返回false,那么 Extension 就不会打开延迟深度链接。
教程:创建延迟深度链接函数
如果您已按照集成指南中的说明进行了操作,那么您就已经配置了 Adjust Extension,可以处理和打开深度链接。如果您尚未进行这些操作,请参考设置深度链接处理相关说明完成操作。
在本教程中,您将了解如何使用 setOnDeferredDeeplinkResponseListener 方法,创建能控制深度链接功能的回传函数。该函数会根据下列条件打开链接:
“如果深度链接包含 "no_open",那么应用就不会将其打开。”
结果将如下:
import android.app.Application;import android.util.Log;
import com.adjust.adobeextension.AdjustAdobeExtension;import com.adjust.adobeextension.AdjustAdobeExtensionConfig;import com.adobe.marketing.mobile.AdobeCallback;import com.adobe.marketing.mobile.Extension;import com.adobe.marketing.mobile.Analytics;import com.adobe.marketing.mobile.Identity;import com.adobe.marketing.mobile.LoggingMode;import com.adobe.marketing.mobile.MobileCore;
public class MainApp extends Application { @Override public void onCreate() { super.onCreate();
MobileCore.setApplication(this); MobileCore.setLogLevel(LoggingMode.VERBOSE);
try { MobileCore.configureWithAppID("your_adobe_app_id");
AdjustAdobeExtensionConfig config = new AdjustAdobeExtensionConfig(AdjustAdobeExtensionConfig.ENVIRONMENT_SANDBOX); config.setOnDeferredDeeplinkResponseListener(new OnDeferredDeeplinkResponseListener() { @Override public boolean launchReceivedDeeplink(Uri deeplink) { if (deeplink.contains("no_open")) { return false; } else { return true; } } }); AdjustAdobeExtension.setConfiguration(config); } catch (Exception e) { Log.e("example", "Exception occurred during configuration: " + e.getMessage()); }
try { List<Class<? extends Extension>> extensions = Arrays.asList( Analytics.EXTENSION, Identity.EXTENSION, AdjustAdobeExtension.EXTENSION); MobileCore.registerExtensions(extensions, new AdobeCallback<object>() { @Override public void call(Object o) { Log.d("example", "Adjust Adobe Extension SDK initialized"); } }); } catch (Exception e) { Log.e("example", "Exception occurred while registering Extension: " + e.getMessage()); } }}您需要进行下列操作:
- 在
try...catch块中调用AdjustAdobeExtensionConfig实例的setOnDeferredDeeplinkResponseListener方法。以参数形式传送OnDeferredDeeplinkResponseListener实例。
try { MobileCore.configureWithAppID("your_adobe_app_id");
AdjustAdobeExtensionConfig config = new AdjustAdobeExtensionConfig(AdjustAdobeExtensionConfig.ENVIRONMENT_SANDBOX); config.setOnDeferredDeeplinkResponseListener(new OnDeferredDeeplinkResponseListener() {}); AdjustAdobeExtension.setConfiguration(config); } catch (Exception e) { Log.e("example", "Exception occurred during configuration: " + e.getMessage()); }- 在
OnDeferredDeeplinkResponseListener声明中,创建一个名为launchReceivedDeeplink的新公共函数。该方法接受Uri参数,并会返回一个boolean。
config.setOnDeferredDeeplinkResponseListener(new OnDeferredDeeplinkResponseListener() { @Override public boolean launchReceivedDeeplink(Uri deeplink) {} });- 向
launchReceivedDeeplink添加if条件,检查deeplink是否包含值"no_open"。如果能找到该字符串,函数就会返回false,应用不会打开延迟深度链接。
@Override public boolean launchReceivedDeeplink(Uri deeplink) { if (deeplink.contains("no_open")) { return false; } }- 最后添加
else块,以便在深度链接不包含"no_open"的情况夏返回true。
@Override public boolean launchReceivedDeeplink(Uri deeplink) { if (deeplink.contains("no_open")) { return false; } else { return true; } }完成了!当用户通过延迟深度链接打开您的应用时,Adjust Extension 就会检查链接中是否包含字符串 "no_open"。如果包含该字符串,应用就不会打开深度链接。