您可以创建深度链接来将用户转到应用中的特定页面。针对用户是否已在设备上安装您的应用,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></activity>
如果用户点击了带有 deep_link
参数的连接,且该参数中包含您的 Scheme 名称 ,那么活动就会触发。
https://app.adjust.com/abc123?deep_link=adjustExample%3A%2F%2F
访问深度链接信息
您可以指定 deep_link
参数内容的发送位置。为此,请在 AndroidManifest.xml
文件中设置活动的 android:launchMode
属性。
请查看 android:launchMode
文档 ,了解更多信息。
Adjust SDK 会使用 initSdk
或 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.}
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
Intent intent = getIntent(); Uri data = intent.getData(); // 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.}
@Overrideprotected void onNewIntent(Intent intent) { super.onNewIntent(intent);
Uri data = intent.getData(); // 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)
AdjustConfig config = new AdjustConfig(this, appToken, environment);//...// Evaluate the deeplink to be launched.config.setOnDeferredDeeplinkResponseListener(new OnDeferredDeeplinkResponseListener() { @Override public boolean launchReceivedDeeplink(Uri deeplink) { Log.d("example", "Deferred deep link callback called!"); Log.d("example", "Deep link URL: " + deeplink);
return true; }});//...Adjust.initSdk(config);
示例
本示例展示了如何通过在回传函数中返回 false
值来阻止 SDK 启动活动。
config.setOnDeferredDeeplinkResponseListener { deeplink -> false}
config.setOnDeferredDeeplinkResponseListener(new OnDeferredDeeplinkResponseListener() { @Override public boolean launchReceivedDeeplink(Uri deeplink) { return false; }});
通过深度链接进行再归因
public static void processDeeplink(Uri url, Context context)
Adjust 支持使用深度链接进行再交互推广活动。要了解更多信息,请查看如何在 Campaign Lab 中设置深度链接。
要对用户进行再归因,您需要在打开 Activity 的onCreate
和onNewIntent
方法中调用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 Adjust.processDeeplink(data, applicationContext)}
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
Intent intent = getIntent(); Uri data = intent.getData(); Adjust.processDeeplink(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。如果找到了匹配,就会尝试解析链接并返回得出的深度链接,然后将其保存在 callback 参数中。
在尝试解析 URL 时,Adjust SDK 会追溯最多 10 个重定向,并将其中最新的 URL 返回为 回传 URL。也就是说,如果要追溯的重定向超过 10 个,那么 SDK 就会返回第 10 个重定向 URL。
此时,您就可以使用返回的深度链接进行用户再归因了。为此,请将深度链接传递至 Adjust.processDeeplink
方法。
AdjustLinkResolution.resolveLink(url, arrayOf("example.com"), object : AdjustLinkResolution.AdjustLinkResolutionCallback { override fun resolvedLinkCallback(resolvedLink: Uri) { Adjust.processDeeplink(resolvedLink, applicationContext) }})
AdjustLinkResolution.resolveLink(url, new String[]{"example.com"}, new AdjustLinkResolution.AdjustLinkResolutionCallback() { @Override public void resolvedLinkCallback(Uri resolvedLink) { Adjust.processDeeplink(resolvedLink, getApplicationContext()); }});
您可以创建深度链接来将用户转到应用中的特定页面。针对用户是否已在设备上安装您的应用,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></activity>
如果用户点击了带有 deep_link
参数的连接,且该参数中包含您的 Scheme 名称 ,那么活动就会触发。
https://app.adjust.com/abc123?deep_link=adjustExample%3A%2F%2F
访问深度链接信息
您可以指定 deep_link
参数内容的发送位置。为此,请在 AndroidManifest.xml
文件中设置活动的 android:launchMode
属性。
请查看 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.}
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
Intent intent = getIntent(); Uri data = intent.getData(); // 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.}
@Overrideprotected void onNewIntent(Intent intent) { super.onNewIntent(intent);
Uri data = intent.getData(); // 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)
AdjustConfig config = new AdjustConfig(this, appToken, environment);//...// Evaluate the deeplink to be launched.config.setOnDeeplinkResponseListener(new OnDeeplinkResponseListener() { @Override public boolean launchReceivedDeeplink(Uri deeplink) { Log.d("example", "Deferred deep link callback called!"); Log.d("example", "Deep link URL: " + deeplink);
return true; }});//...Adjust.onCreate(config);
function deferredDeeplinkCallback(deeplink) { console.log("Deferred deep link callback called!"); console.log(`Deep link URL: ${deeplink}`);}//...let adjustConfig = new AdjustConfig(yourAppToken, environment);adjustConfig.setOpenDeferredDeeplink(true);adjustConfig.setDeferredDeeplinkCallback(deferredDeeplinkCallback);//...Adjust.start(adjustConfig);
示例
本示例展示了如何通过在回传函数中返回 false
值来阻止 SDK 启动活动。
config.setOnDeeplinkResponseListener { deeplink -> false}
config.setOnDeeplinkResponseListener(new OnDeeplinkResponseListener() { @Override public boolean launchReceivedDeeplink(Uri deeplink) { return false; }});
通过深度链接进行再归因
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())}
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
Intent intent = getIntent(); Uri data = intent.getData(); Adjust.appWillOpenUrl(data, getApplicationContext());}
Adjust.appWillOpenUrl(deeplinkUrl);
链接解析
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。如果找到了匹配,就会尝试解析链接并返回得出的深度链接,然后将其保存在 callback 参数中。
在尝试解析 URL 时,Adjust SDK 会追溯最多 10 个重定向,并将其中最新的 URL 返回为 回传 URL。也就是说,如果要追溯的重定向超过 10 个,那么 SDK 就会返回第 10 个重定向 URL。
此时,您就可以使用返回的深度链接进行用户再归因了。为此,请将深度链接传递至 Adjust.appWillOpenUrl
方法。
AdjustLinkResolution.resolveLink(url, arrayOf("example.com"), object : AdjustLinkResolution.AdjustLinkResolutionCallback { override fun resolvedLinkCallback(resolvedLink: Uri) { Adjust.appWillOpenUrl(resolvedLink, applicationContext) }})
AdjustLinkResolution.resolveLink(url, new String[]{"example.com"}, new AdjustLinkResolution.AdjustLinkResolutionCallback() { @Override public void resolvedLinkCallback(Uri resolvedLink) { Adjust.appWillOpenUrl(resolvedLink, getApplicationContext()); }});