深度链接

Adjust SDK 允许您使用深度链接将用户定向至应用中的特定页面。您也可以收集关于深度链接及其内容信息,以备之后使用。

深度链接分两类:

  • 直接深度链接:​ 如果用户的设备上已经安装了应用,就会发生直接深度链接。在这种情况下,深度链接会将用户转到链接中指定的页面。
  • 延迟深度链接​ :如果用户设备上尚未安装应用,那么就会发生延迟深度链接。在这种情况下,深度链接会先将用户转到设备应用商店,进行应用下载和安装。用户安装并打开应用后,SDK 就会将用户重定向至链接中指定的页面。

用户通过链接 URL 打开应用后,您就能使用 SDK 访问深度链接 URL。

直接深度链接

如果用户设备上已经安装了您的应用,在用户与包含深度链接的链接互动时,应用就会打开。然后,您就能解析深度链接信息,以备之后使用。为此,您需要选择唯一的 scheme 名称。

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

  1. 在您的 AndroidManifest.xml 文件中为活动指定唯一的 scheme 名称。
  2. intent-filter 部分添加到活动定义中。
  3. 使用您选择的 scheme 名称指定 android:scheme 属性值。

例如,您可以设置名为 MainActivity 的活动按如下方式打开

<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>

要在用户点击链接 URL 时打开您的应用,请将其 scheme 名称作为 deep_link 参数添加至 Adjust 链接。不含任何额外信息的链接 URL 形式如下: https://app.adjust.com/abc123?deep_link=adjustExample%3A%2F%2F

重要提示:
deep_link 参数必须进行 URL 编码

遵照上述示例,用户在与链接 URL 互动时,您的应用就会打开。应用打开后会启动 MainActivity 活动。您将在 MainActivity 类中收到有关 deep_link 参数内容的信息。SDK 会解码参数内容。

您可以设置 deep_link 参数内容的发送位置。为此请设置活动的 android:launchMode 属性。您可以在 AndroidManifest.xml 文件中找到该信息。请查看 安卓官方文档 ,了解更多关于 android:launchMode 属性的信息。

SDK 会在活动的 Intent 对象中传递深度链接信息。为此应用会使用活动的 onCreateonNewIntent 方法。启动应用并触发这些方法之一后,就可以访问深度链接内容了。您可以在应用的其他位置使用这些信息。

您可以按以下两种方式提取深度链接内容:

Java

onCreate 方法的使用:

@Override
protected 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.
}

onNewIntent 方法的使用:

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

Uri data = intent.getData();
// data.toString()-> This is your deep_link parameter value.
}

延迟深度链接

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

延迟深度链接回传

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

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

Java
Javascript
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);

示例

通过深度链接进行再归因

Adjust 支持使用深度链接进行再交互推广活动。要了解更多信息,请参阅如何在深度链接中附加归因数据

要对用户进行再归因,您需要在应用中对 Adjust SDK 做一个额外调用。应用接收到深度链接内容时,向 appWillOpenUrl(Uri, Context) 方法添加一个调用。此时,Adjust SDK 就会在深度链接中寻找新的归因信息。如果 SDK 找到新信息,就会将其转发至 Adjust 后端进行再归因。

Java
Javascript

onCreate 方法的使用:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Intent intent = getIntent();
    Uri data = intent.getData();
Adjust.appWillOpenUrl(data,getApplicationContext());
}

onNewIntent 方法的使用:

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

Uri data = intent.getData();
Adjust.appWillOpenUrl(data,getApplicationContext());
}

链接解析

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

resolveLinkWithUrl 方法带有下列参数:

  • url - 打开应用的深度链接。
  • resolveUrlSuffixArray - 需要解析的已设置推广活动自定义域。
  • adjustLinkResolutionCallback - 包含最终 URL 的回传。

该方法会比对深度链接和 resolveUrlSuffixArray中的域。如果找不到任何匹配,就会按原样转发深度链接 URL。如果找到了匹配,就会尝试解析链接并返回得出的深度链接,并将其保存在 callback 参数中。此时,您就可以使用返回的深度链接进行用户再归因了。为此,请将深度链接传递至 Adjust.appWillOpenUrl 方法。

请注意:
在尝试解析 URL 时,Adjust SDK 会追溯最多 10 个重定向,并将其返回的最新 URL 作为 callback URL。也就是说,如果要追溯的重定向超过 10 个,那么 SDK 就会返回第 10 个 重定向 URL。
Java
AdjustLinkResolution.resolveLink(url, 
                                 new String[]{"example.com"},
                                 new AdjustLinkResolution.AdjustLinkResolutionCallback() {
    @Override
    public void resolvedLinkCallback(Uri resolvedLink) {
        Adjust.appWillOpenUrl(resolvedLink,getApplicationContext());
    }
});