您可以创建深度链接来将用户转到应用中的特定页面。针对用户是否已在设备上安装您的应用,Adjust SDK 会使用不同的逻辑:
- 直接深度链接:用于用户已经安装应用的情况。用户会被转向链接中指定的页面。
- 如果用户尚未安装应用,那么就会发生延迟深度链接。链接首先会将用户转向应用商店页面来安装应用。用户安装后,就会被带到链接中指定的页面。
用户通过链接打开应用后,SDK 就可以读取深度链接数据了。
配置方案名称
如果用户已经安装了您的应用,那么在与包含深度链接信息的链接互动时,应用就会打开。Adjust SDK 中包含的工具能够解析深度链接信息,在应用中使用。要设置深度链接,请选择一个唯一的 Scheme 名称 。
您可以进行设置,在用户与深度链接互动时启动特定活动。为此请进行下列操作:
- 在您的
AndroidManifest.xml
文件中为活动指定 scheme 名称 。 - 向活动定义添加一个
intent-filter
节点。 - 在
intent-filter
节点中添加一个包含 Scheme 名称 的android:scheme
数据节点。
示例
该示例展示了如何设置名为 MainActivity
的活动,并以 Scheme 名称 adjustExample
将其打开。
<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>
<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>
</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
元素。
您的应用现在可以处理安卓应用链接了。当有用户点击了带有insights.go.link
域名的链接时,您的应用会自动打开。
https://insights.go.link/login?adj_t=abc123
访问深度链接信息
您可以指定 deep_link
参数内容的发送位置。为此,请在 AndroidManifest.xml
文件中设置活动的 android:launchMode
属性。
Adjust SDK 会使用 onCreate
或 onNewIntent
方法,传递活动 intent 对象中的深度连接信息。应用启动,且上述方法之一被调用后,您就可以读取深度链接内容了。然后,您可以在应用的其他位置访问这些信息。
在 onCreate
或 onNewIntent
方法中调用 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 默认自动打开延迟深度链接。无需额外设置。如果您想禁用该行为,则需要使用 setOnDeeplinkResponseListener
方法设置一个延迟深度链接回传。
设置延迟深度链接回传
public void setOnDeeplinkResponseListener(OnDeeplinkResponseListener onDeeplinkResponseListener)
您可以配置 Adjust SDK,使其在接收到延迟深度链接时调用一个委托函数。委托函数会以 String
参数的形式接收深度链接。
如果想打开深度链接,请在委托函数中返回 true
。如果不想打开,请返回 false
。
val config = AdjustConfig(this, appToken, environment)//...config.setOnDeeplinkResponseListener { deeplink -> Log.d("example", "Deferred deep link callback called!") Log.d("example", "Deep link URL: $deeplink") true}//...Adjust.onCreate(config)
示例
本示例展示了如何通过在回传函数中返回 false
值来阻止 SDK 启动活动。
通过深度链接进行再归因
public static void appWillOpenUrl(Uri url, Context context)
Adjust 支持使用深度链接进行再交互推广活动。要了解更多信息,请查看如何在 Campaign Lab 中设置深度链接。
要对用户进行再归因,请在应用收到深度链接内容时调用 appWillOpenUrl
方法。这样,Adjust SDK 就会在深度链接中寻找新的归因信息。如果 SDK 找到新信息,就会将其转发至 Adjust 服务器进行再归因。
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main)
val intent = intent val data = intent.data Adjust.appWillOpenUrl(data, getApplicationContext())}
链接解析
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.appWillOpenUrl
方法。