adjust-icon

设置延迟深度链接

延迟深度链接让未安装您应用的用户可以点击 Adjust 链接,从商店安装应用,并在首次打开应用时直接跳转至其目标内容。

工作原理

以下是延迟深度链接的基本流程:

  1. 用户点击 Adjust 深度链接。
  2. Adjust 服务器将用户重定向至应用商店。
  3. 用户安装并打开您的应用。
  4. SDK 向 Adjust 的服务器发送会话和归因请求。如果 ODDL 已启用,且安装符合条件,Adjust 就会在会话响应中返回延迟深度链接。否则,Adjust 会在归因响应中返回深度链接。
  5. 如果适用,您的应用将显示其初始界面,例如新客户引导界面和用户登录界面。
  6. 应用通过您配置的回传接收延迟深度链接。您的应用程序随后会处理此链接,将用户引导至相应的界面。

当用户点击 Adjust 品牌化链接 (brandname.go.link),且该链接被延迟时,Adjust 的服务器会使用在 Adjust 控制面板的平台设置中配置的应用 Scheme,将其转换为应用 Scheme 格式 (example://),然后传递给 Adjust SDK。

设置

  1. 创建一个 AdjustConfig 对象。
  2. AdjustConfig 对象上设置延迟深度链接回传。Adjust SDK 收到延迟深度链接后会调用该回传。
  3. 设置 isDeferredDeeplinkOpeningEnabled 属性,来控制 SDK 是否自动打开深度链接。
  4. 初始化 SDK。
AdjustConfig adjustConfig = new AdjustConfig('{YourAppToken}', AdjustEnvironment.sandbox);
adjustConfig.deferredDeeplinkCallback = (String? deeplink) {
/*
* TODO: Store deep link or handle it immediately
*
* deeplink format:
*
* example://summer-clothes?promo=beach&adj_t=abc123
*/
};
adjustConfig.isDeferredDeeplinkOpeningEnabled = false; // or true based on your use case (see below)
Adjust.initSdk(adjustConfig);

isDeferredDeeplinkOpeningEnabled 属性决定回传代码执行后会发生什么:

设置为 false (最常见)

如果希望您的应用对延迟深链接的处理时间和方式拥有完全控制权,请采用此方法。将该属性设置为 false 时,Adjust SDK 不会尝试打开延迟深度链接。例如,如果您的应用需要在处理延迟深度链接之前显示并跳过初始界面 (如新客户引导或登录界面),则此方法十分适用。

设置为 true (默认)

如果您希望 Adjust SDK 在回传代码运行完毕后立即尝试打开延迟深度链接,请使用此方法。例如,如果您的应用没有任何初始界面,则此方法十分适用。

Adjust SDK 收到延迟深度链接后,您的回传代码就会运行,然后使用操作系统原生方法 (iOS:application(_:open:options:);Android:startActivity(Intent)) 打开深度链接。然后,Adjust SDK 会通过原生代码接收来自操作系统的链接,并将其转发至 directDeeplinkCallback

完整代码示例

此示例展示了拥有新客户引导流程的应用如何处理延迟深度链接。应用内部流程总结如下:

  1. 用户首次打开应用。

  2. 应用开始其新客户引导流程。

  3. 应用的回传从 Adjust SDK 接收延迟深度链接,然后检查新客户引导是否完成:

    • 如果已完成新客户引导,会立即处理深度链接。
    • 如果未完成新客户引导,则会存储深度链接。
  4. 新客户引导完成后,应用会检查并处理所有已存储的延迟深度链接。

  5. 应用将用户引导至深度链接界面。

import 'package:adjust_sdk/adjust.dart';
import 'package:adjust_sdk/adjust_config.dart';
import 'package:flutter/foundation.dart';
String? _pendingDeeplink;
void initAdjust() {
// Configure Adjust SDK
// Replace {YourAppToken} with your Adjust app token
const appToken = '{YourAppToken}';
AdjustConfig? adjustConfig;
// Enable verbose logging for deep link testing
if (kDebugMode) {
adjustConfig = AdjustConfig(appToken, AdjustEnvironment.sandbox);
adjustConfig.logLevel = AdjustLogLevel.verbose;
} else {
adjustConfig = AdjustConfig(appToken, AdjustEnvironment.production);
adjustConfig.logLevel = AdjustLogLevel.suppress;
}
// Disable automatic opening so we can handle it manually
adjustConfig.isDeferredDeeplinkOpeningEnabled = false;
// Set up deferred deep link callback
adjustConfig.deferredDeeplinkCallback = (String? deeplink) {
if (deeplink == null) return;
if (hasCompletedOnboarding) {
// If onboarding is complete, handle deferred deep link immediately
// TODO: Handle the deferred deep link by parsing the path and
// navigating to the appropriate screen.
} else {
// Store deferred deep link to handle after onboarding
_pendingDeeplink = deeplink;
}
};
// Initialize Adjust SDK
Adjust.initSdk(adjustConfig);
}
// When onboarding completes:
void onOnboardingComplete() {
if (_pendingDeeplink != null) {
// TODO: Handle the deferred deep link by parsing the path and
// navigating to the appropriate screen.
_pendingDeeplink = null;
}
}