adjust-icon

设置深度链接

深度链接是一种 URI (统一资源标志符,Uniform Resource Identifier),能将用户带到应用中的特定页面,在用户与链接互动后直接呈现相关内容,优化用户体验。

根据用户是否已经安装您的应用,针对 Adobe Experience SDK 的 Adjust Android Extension 支持两种类型的深度链接:

  • 直接深度链接 :如果用户已经安装了您的应用,那么链接就会打开指定页面。
  • 延迟深度链接 :如果用户尚未安装您的应用,链接会将用户转到应用商店进行安装。安装后,应用会打开指定页面。

您可以向 Adjust 发送深度链接信息,来对用户进行再归因。当用户与深度链接交互时,您可以将这些数据发送给 Adjust,更新用户的归因信息。

  1. 首先,使用您的深度链接 URI 创建一个 AdjustDeeplink 实例。AdjustDeeplink 类会验证该 URI,并检查格式化字符串,以确保处理成功。

  2. 然后调用 Adjust.processDeeplink 函数来处理深度链接,并将信息发送至 Adjust。

AdjustDeeplink 类构造函数需要以下参数:

url: Uri

打开应用的深度链接 URI。

Adjust.processDeeplink 函数需要以下参数:

adjustDeeplink: AdjustDeeplink

您创建的 AdjustDeeplink 实例。

context: Context

应用程序的上下文。

针对 Adobe Experience SDK 的 Adjust Android Extension 默认自动打开延迟深度链接。要控制此行为,或在深度链接打开之前进行验证,请配置扩展,在通过延迟深度链接打开应用时调用一个函数。

  1. AdjustAdobeExtensionConfig 实例上调用 setOnDeferredDeeplinkResponseListener
  2. 调用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());
}
}
}

您需要进行下列操作:

  1. try...catch 块中调用 AdjustAdobeExtensionConfig 实例的 setOnDeferredDeeplinkResponseListener 方法。以参数形式传送 OnDeferredDeeplinkResponseListener 实例。
MainApp.java
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());
}
  1. OnDeferredDeeplinkResponseListener 声明中,创建一个名为 launchReceivedDeeplink 的新公共函数。该方法接受 Uri 参数,并会返回一个 boolean
MainApp.java
config.setOnDeferredDeeplinkResponseListener(new OnDeferredDeeplinkResponseListener() {
@Override
public boolean launchReceivedDeeplink(Uri deeplink) {}
});
  1. launchReceivedDeeplink 添加 if 条件,检查 deeplink 是否包含值 "no_open"。如果能找到该字符串,函数就会返回 false,应用不会打开延迟深度链接。
MainApp.java
@Override
public boolean launchReceivedDeeplink(Uri deeplink) {
if (deeplink.contains("no_open")) {
return false;
}
}
  1. 最后添加 else 块,以便在深度链接不包含 "no_open" 的情况夏返回 true
MainApp.java
@Override
public boolean launchReceivedDeeplink(Uri deeplink) {
if (deeplink.contains("no_open")) {
return false;
} else {
return true;
}
}

完成了!当用户通过延迟深度链接打开您的应用时,Adjust Extension 就会检查链接中是否包含字符串 "no_open"。如果包含该字符串,应用就不会打开深度链接。