adjust-icon

디퍼드 딥링크 설정

디퍼드 딥링크는 앱을 설치하지 않은 사용자가 Adjust 링크를 클릭하여 App Store에서 앱을 설치하도록 하고, 첫 앱 실행 시 의도한 콘텐츠로 사용자를 이동시킵니다.

작동 방식

다음은 디퍼드 딥링킹의 기본 흐름입니다.

  1. 사용자가 Adjust 딥링크를 클릭합니다.
  2. Adjust 서버가 사용자를 앱 스토어로 리다이렉트합니다.
  3. 사용자가 앱을 설치하고, 실행합니다.
  4. Adjust SDK가 세션 및 어트리뷰션 요청을 Adjust 서버로 전송합니다. ODDL이 활성화되고 설치가 자격을 충족한 경우 Adjust는 세션 응답에 디퍼드 딥링크를 반환합니다. 그렇지 않은 경우 Adjust는 어트리뷰션 응답에 딥링크를 반환합니다.
  5. 해당되는 경우, 앱은 온보딩 화면과 사용자 로그인 화면 같은 초기 화면을 표시합니다.
  6. 앱은 설정한 콜백을 통해 디퍼드 딥링크를 수신합니다. 이후 앱이 해당 링크를 처리하여 사용자를 적절한 화면으로 이동시킵니다.

사용자가 Adjust 브랜드 링크(brandname.go.link)를 클릭하고 링크가 디퍼드되면 Adjust 서버는 Adjust 대시보드의 iOS 플랫폼 설정에서 구성된 앱 스킴을 사용하여 해당 링크를 앱 스킴 형식(example://)으로 변환한 후 Adjust SDK로 전달합니다.

설정

  1. AdjustConfig 객체를 생성합니다.
  2. AdjustConfig 객체에 디퍼드 딥링크 콜백을 설정합니다. Adjust SDK는 디퍼드 딥링크를 수신한 후 이 메서드를 호출합니다.
  3. launchDeferredDeeplink 속성을 설정하여 SDK가 딥링크를 자동으로 열지 지정합니다.
  4. SDK를 초기화합니다.
AdjustConfig adjustConfig = new AdjustConfig('{YourAppToken}', AdjustEnvironment.sandbox);
adjustConfig.deferredDeeplinkCallback = (String? uri) {
/*
* TODO: Store deep link or handle it immediately
*
* deeplink format:
*
* example://summer-clothes?promo=beach&adj_t=abc123
*/
};
adjustConfig.launchDeferredDeeplink = false; // or true based on your use case (see below)
Adjust.start(adjustConfig);

launchDeferredDeeplink 속성은 콜백 코드가 실행된 이후의 동작을 결정합니다.

false로 설정 (가장 일반적)

앱에서 디퍼드 딥링크를 처리하는 시점과 방법을 완전히 제어하려면 이 접근 방식을 사용합니다. false로 설정 시, Adjust SDK는 디퍼드 딥링크를 열려고 시도하지 않습니다. 예를 들어, 앱이 초기 화면(예: 온보딩 또는 로그인)을 표시한 이후에 디퍼드 딥링크를 처리해야 하는 경우 이 접근 방식이 적합합니다.

true로 설정 (기본 설정)

콜백 코드가 실행된 직후 Adjust SDK가 디퍼드 딥링크를 열도록 하려면 이 접근 방식을 사용합니다. 예를 들어, 앱에 초기 화면이 없는 경우 이 접근 방식이 적합합니다.

Adjust SDK가 디퍼드 딥링크를 수신하면 콜백 코드가 실행되고, Adjust SDK는 네이티브 OS 메서드(iOS에서는 application(_:open:options:), Android에서는 startActivity(Intent))를 사용하여 딥링크 URL을 엽니다. 이후 OS는 링크를 app_links uriLinkStream 수신자에 전달합니다.

전체 코드 예시

본 예시는 온보딩 프로세스가 있는 앱이 디퍼드 딥링크를 어떻게 처리하는지 보여줍니다. 앱의 내부 흐름을 요약하면 다음과 같습니다.

  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.launchDeferredDeeplink = false;
// Set up deferred deep link callback
adjustConfig.deferredDeeplinkCallback = (String? uri) {
if (uri == 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 = uri;
}
};
// Initialize Adjust SDK
Adjust.start(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;
}
}