您可以创建深度链接来将用户转到应用中的特定页面。针对用户是否已在设备上安装您的应用,Adjust SDK 会使用不同的逻辑:
- 直接深度链接:用于用户已经安装应用的情况。用户会被转向链接中指定的页面。
- 如果用户尚未安装应用,那么就会发生延迟深度链接。链接首先会将用户转向应用商店页面来安装应用。用户安装后,就会被带到链接中指定的页面。
用户通过链接打开应用后,SDK 就可以读取深度链接数据了。
设置深度链接
如果用户已经安装了您的应用,那么在与包含深度链接信息的链接互动时,应用就会打开。Adjust SDK 中包含的工具能够解析深度链接信息,在应用中使用。
您需要在应用层级上设置深度链接。请按照下方链接中的说明,在您的目标平台上设置深度链接:
通过深度链接进行再归因
要对用户进行再归因,请在应用收到深度链接内容时调用 appWillOpenUrl
方法。这样,Adjust SDK 就会在深度链接中寻找新的归因信息。如果 SDK 找到新信息,就会将其转发至 Adjust 服务器进行再归因。
+ (void)appWillOpenUrl:(nonnull NSURL *)url;
要针对 iOS 启用深度链接,请在应用委托中使用 true
值调用 appWillOpenUrl
方法。
func application(application:UIApplication!, didFinishLaunchingWithOptions launchOptions:NSDictionary!) -> Bool {
GeneratedPluginRegistrant.registerWithRegistry(self)
// Override point for customization after application launch.
return super.application(application, didFinishLaunchingWithOptions:launchOptions)
func application(application:UIApplication!, openURL url:NSURL!, sourceApplication:String!, annotation:AnyObject!) -> Bool {
Adjust.appWillOpenUrl(url)
func application(application:UIApplication!, continueUserActivity userActivity:NSUserActivity!, restorationHandler:([AnyObject]!)->Void) -> Bool {
if (userActivity.activityType() == NSUserActivityTypeBrowsingWeb) {
Adjust.appWillOpenUrl(userActivity.webpageURL())
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[GeneratedPluginRegistrant registerWithRegistry:self];
// Override point for customization after application launch.
return [super application:application didFinishLaunchingWithOptions:launchOptions];
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
[Adjust appWillOpenUrl:url];
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<uiuseractivityrestoring>> *restorableObjects))restorationHandler {
if ([[userActivity activityType] isEqualToString:NSUserActivityTypeBrowsingWeb]) {
[Adjust appWillOpenUrl:[userActivity webpageURL]];
public static void appWillOpenUrl(Uri url, Context context)
要针对安卓启用深度链接,请在主要活动中使用 true
值调用 appWillOpenUrl
。
import com.adjust.sdk.flutter.AdjustSdk
import io.flutter.embedding.android.FlutterActivity
// Used for post flutter 1.12 Android projects
//import io.flutter.app.FlutterActivity
class MainActivity : FlutterActivity() {
// Either call make the call in onCreate.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// GeneratedPluginRegistrant.registerWith(this)
// Used only for pre flutter 1.12 Android projects
Intent intent = getIntent()
Uri data = intent.getData()
AdjustSdk.appWillOpenUrl(data, this)
// Or make the call in onNewIntent.
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
Uri data = intent.getData()
AdjustSdk.appWillOpenUrl(data, this)
import com.adjust.sdk.flutter.AdjustSdk;
import io.flutter.embedding.android.FlutterActivity; // Used for post flutter 1.12 Android projects
//import io.flutter.app.FlutterActivity; // Used for pre flutter 1.12 Android projects
public class MainActivity extends FlutterActivity {
// Either call make the call in onCreate.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// GeneratedPluginRegistrant.registerWith(this); Used only for pre flutter 1.12 Android projects
Intent intent = getIntent();
Uri data = intent.getData();
AdjustSdk.appWillOpenUrl(data, this);
// Or make the cakll in onNewIntent.
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Uri data = intent.getData();
AdjustSdk.appWillOpenUrl(data, this);
延迟深度链接
bool? launchDeferredDeeplink;
SDK 默认自动打开延迟深度链接。无需额外设置。将 config 示例上的 launchDeferredDeeplink
属性设为 false ,即可禁用该设置。
AdjustConfig adjustConfig = new AdjustConfig('{YourAppToken}', AdjustEnvironment.Sandbox);
adjustConfig.launchDeferredDeeplink = false;
Adjust.start(adjustConfig);
设置延迟深度链接回传
typedef void DeferredDeeplinkCallback(String? uri);
DeferredDeeplinkCallback? deferredDeeplinkCallback;
您可以向 config 实例 deferredDeeplinkCallback
属性添加一个函数,以此配置 Adjust SDK,使其在收到延迟深度链接时调用一个函数。该函数会以 String
参数的形式接收深度链接。
AdjustConfig adjustConfig = new AdjustConfig(yourAppToken, environment);
adjustConfig.deferredDeeplinkCallback = (String uri) {
print('[Adjust]: Received deferred deeplink: ' + uri);
Adjust.start(adjustConfig);
示例
该示例展示了如何在用户打开延迟深度链接时记录深度链接地址。
import 'package:adjust_sdk/adjust.dart';
import 'package:adjust_sdk/adjust_config.dart';
initPlatformState() async {
new AdjustConfig('2fm9gkqubvpc', AdjustEnvironment.sandbox);
config.logLevel = AdjustLogLevel.verbose;
config.deferredDeeplinkCallback = (String? uri) {
print('[Adjust]: Received deferred deeplink: ' + uri!);
启用 LinkMe
通过 Adjust SDK,您可以从设备剪贴板复制深度链接信息。配合Adjust LinkMe 解决方案使用时,该功能可在 iOS 15 及更高版本操作系统中设置延迟深度链接。
当用户点击 LinkMe URL 时,可以选择将链接信息复制到剪贴板。您可以使用 Adjust SDK 读取系统剪贴板,获取深度链接信息。如果含有深度链接信息,SDK 就会将用户转到应用中的正确页面。
要在您的应用中开启剪贴板查看,请将 config 对象的 linkMeEnabled
属性值设置为 true
:
AdjustConfig adjustConfig = new AdjustConfig('{YourAppToken}', AdjustEnvironment.Sandbox);
adjustConfig.linkMeEnabled = true;
Adjust.start(adjustConfig);