adjust-icon

设置深度链接

您可以创建深度链接来将用户转到应用中的特定页面。针对用户是否已在设备上安装您的应用,Adjust SDK 会使用不同的逻辑:

  • 直接深度链接:用于用户已经安装应用的情况。用户会被转向链接中指定的页面。
  • 如果用户尚未安装应用,那么就会发生延迟深度链接。链接首先会将用户转向应用商店页面来安装应用。用户安装后,就会被带到链接中指定的页面。

用户通过链接打开应用后,SDK 就可以读取深度链接数据了。

配置方案名称

如果用户已经安装了您的应用,那么在与包含深度链接信息的链接互动时,应用就会打开。Adjust SDK 中包含的工具能够解析深度链接信息,在应用中使用。要设置深度链接,请选择一个唯一的 Scheme 名称

您可以进行设置,在用户与深度链接互动时启动特定活动。为此请进行下列操作:

  1. 在您的 AndroidManifest.xml 文件中为活动指定 scheme 名称
  2. 向活动定义添加一个 intent-filter 节点。
  3. intent-filter 节点中添加一个包含 Scheme 名称android:scheme 数据节点。

示例

该示例展示了如何设置名为 MainActivity 的活动,并以 Scheme 名称 adjustExample 将其打开。

AndroidManifest.xml
<activity android:name=".MainActivity" android:configChanges="orientation|keyboardHidden" android:label="@string/app_name" android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="adjustExample" />
</intent-filter>
</activity>

您的应用现在将可以处理 URI scheme。如果用户点击了带有 deep_link 参数的连接,且该参数中包含您的 Scheme 名称 ,那么活动就会触发。

https://app.adjust.com/abc123?deep_link=adjustExample%3A%2F%2F

请确保配置 scheme 名称,即便是设置安卓应用链接用于深度链接时也不例外。

对于安卓应用链接,添加intent过滤器至您的AndroidManifest.xml文件,指定应用可以处理的 URL。在intent过滤器中纳入带android:autoVerify="true"属性的data元素。

<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" android:host="insights.go.link" />
<data android:scheme="https" android:host="insights.go.link" />
</intent-filter>

您的应用现在可以处理安卓应用链接了。当有用户点击了带有insights.go.link域名的链接时,您的应用会自动打开。

https://insights.go.link/login?adj_t=abc123

您可以指定 deep_link 参数内容的发送位置。为此,请在 AndroidManifest.xml 文件中设置活动的 android:launchMode 属性。

Adjust SDK 会使用 onCreateonNewIntent 方法,传递活动 intent 对象中的深度连接信息。应用启动,且上述方法之一被调用后,您就可以读取深度链接内容了。然后,您可以在应用的其他位置访问这些信息。

onCreateonNewIntent 方法中调用 getData() 方法,以提取深度链接信息。

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val intent = intent
val data = intent.data
// data.toString() -> This is your deep_link parameter value.
}
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
val data = intent?.data
// data.toString() -> This is your deep_link parameter value.
}

延迟深度链接

Adjust SDK 默认自动打开延迟深度链接。无需额外设置。如果您想禁用该行为,则需要使用 AdjustConfig.setOnDeferredDeeplinkResponseListener 方法设置一个延迟深度链接回传。

方法签名
public void setOnDeferredDeeplinkResponseListener(OnDeferredDeeplinkResponseListener onDeferredDeeplinkResponseListener)

您可以配置 Adjust SDK,使其在接收到延迟深度链接时调用一个委托函数。委托函数会以 String 参数的形式接收深度链接。

如果想打开深度链接,请在委托函数中返回 true 。如果不想打开,请返回 false

val config = AdjustConfig(this, appToken, environment)
//...
config.setOnDeferredDeeplinkResponseListener { deeplink ->
Log.d("example", "Deferred deep link callback called!")
Log.d("example", "Deep link URL: $deeplink")
true
}
//...
Adjust.initSdk(config)

示例

本示例展示了如何通过在回传函数中返回 false 值来阻止 SDK 启动活动。

config.setOnDeferredDeeplinkResponseListener { deeplink ->
false
}
方法签名
public static void processDeeplink(AdjustDeeplink adjustDeeplink, Context context)

Adjust 支持使用深度链接进行再交互推广活动。要了解更多信息,请查看如何在 Campaign Lab 中设置深度链接

要对用户进行再归因,您需要在打开 Activity 的onCreateonNewIntent方法中调用Adjust.processDeeplink方法。这样,Adjust SDK 就会在深度链接中寻找新的归因信息。如果 SDK 找到新信息,就会将其转发至 Adjust 服务器进行再归因。

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val intent = intent
val data = intent.data
val adjustDeeplink = AdjustDeeplink(data)
Adjust.processDeeplink(adjustDeeplink, applicationContext)
}
方法签名
public static void getLastDeeplink(final Context context, final OnLastDeeplinkReadListener onLastDeeplinkReadListener)

您可以通过调用Adjust.getLastDeeplink()方法返回由Adjust.processDeeplink()Adjust.processAndResolveDeepLink()方法解析的最近一个深度链接 URL。此方法会以深度链接对象的形式返回最近解析的深度链接。

Adjust.getLastDeeplink(context) { deeplink ->
if (deeplink != null) {
Log.d("Example", deeplink.toString())
}
}
方法签名
public static void resolveLink(final String url,
final String[] resolveUrlSuffixArray,
final AdjustLinkResolutionCallback adjustLinkResolutionCallback)

有的电子邮件服务提供商 (ESP) 会针对营销推广活动使用自有的自定义域名。如果您需要通过自定义域名监测点击,就要设置 SDK 以解析链接。为此,请调用 AdjustLinkResolution 类的 resolveLink 方法。此时,Adjust SDK 就会跟随自定义链接,在打开深度链接时进行解析。这样,您就能记录用户与电子邮件推广活动的互动了。

resolveLinkWithUrl 方法使用下列参数:

  • url (String):打开应用的深度链接。
  • resolveUrlSuffixArray (String[]):需要解析的、已设置推广活动的自定义域名。
  • adjustLinkResolutionCallback (AdjustLinkResolutionCallback):返回最终 URL 的回传。

该方法会比对深度链接和 resolveUrlSuffixArray中的域。如果找不到任何匹配,就会按原样转发深度链接 URL。如果找到了匹配,就会尝试解析链接并返回得出的深度链接,然后将其保存在回传参数中。

此时,您就可以使用返回的深度链接进行用户再归因了。为此,请将深度链接传递至 Adjust.processDeeplink 方法。

AdjustLinkResolution.resolveLink(url, arrayOf("example.com"), object : AdjustLinkResolution.AdjustLinkResolutionCallback {
override fun resolvedLinkCallback(resolvedLink: Uri) {
val adjustDeeplink = AdjustDeeplink(resolvedLink)
Adjust.processDeeplink(adjustDeeplink, applicationContext)
}
})