深度链接是一种 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"
。如果包含该字符串,应用就不会打开深度链接。