딥링크

Adjust SDK는 딥링크를 사용하여 사용자를 앱의 특정 페이지로 이동시킬 수 있도록 해줍니다. 또한 딥링크에 대한 정보와 내용을 수집하여 나중에 사용할 수도 있습니다.

딥링크에는 두 가지 유형이 있습니다.

  • 다이렉트 : 다이렉트 딥링크는 사용자가 이미 기기에 앱을 설치한 경우 발생합니다. 이 경우 딥링크는 사용자를 링크에 명시된 화면으로 재이동시킵니다.
  • 디퍼드: 디퍼드 딥링크는 사용자가 앱을 기기에 설치하지 않은 경우 발생합니다. 이 경우 사용자는 우선 앱을 설치할 수 있도록 앱 스토어로 이동하게 됩니다. 앱을 설치하고 실행하면, SDK는 사용자를 링크에 명시한 화면으로 재이동시킵니다.

딥링크 URL은 사용자가 트래커 URL로부터 앱을 실행한 뒤 SDK를 사용하여 액세스할 수 있습니다.

다이렉트 딥링크

사용자가 이미 기기에 앱을 설치한 경우, 사용자가 딥링크를 포함한 트래커를 클릭하면 다이렉트 딥링크가 발생합니다. 해당 딥링크 정보를 파싱하여 이후 사용할 수 있습니다. 이를 활용하려면 원하는 고유 스킴 이름을 선택해야 합니다.

사용자가 딥링크를 클릭할 때 특정 액티비티가 실행되도록 설정할 수 있습니다. 다음을 설정하시기 바랍니다:

  1. AndroidManifest.xml 파일 내에서 고유한 스킴 이름을 활동에 지정하시기 바랍니다.
  2. 활동 정의에 intent-filter 섹션을 추가합니다.
  3. 원하는 스킴 이름과 함께 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을 클릭할 때 앱이 실행되게 하려면, 스킴 이름을 Adjust 트래커에 deep_link 파라미터로 추가합니다. 추가 정보가 없는 트래커 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 속성에 대한 자세한 정보는 Android 공식 문서를 참조하시기 바랍니다.

SDK는 활동의 Intent 객체 내에서 딥링크 정보를 제공합니다. 이를 위해 활동의 onCreate 또는 onNewIntent 메서드가 사용됩니다. 앱을 실행하고 이 메서드 중 하나를 실행하면, 딥링크 내용에 액세스할 수 있습니다. 이후 이 정보를 앱의 다른 곳에서 사용할 수도 있습니다.

딥링크 내용 추출은 위 메서드 중 하나를 다음과 같이 실행하면 됩니다:

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() -> deep_link 파라미터 값입니다.
}

onNewIntent 메서드 사용하기:

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

    Uri data = intent.getData();
    // data.toString() -> deep_link 파라미터 값입니다.
}

디퍼드 딥링크

Adjust SDK는 기본 설정에 따라 디퍼드 딥링크를 실행합니다. 추가 설정은 필요하지 않습니다. 이 행동을 비활성화 또는 변경하려면 디퍼드 딥링크 콜백을 설정해야 합니다.

디퍼드 딥링크 콜백

디퍼드 딥링크 수신 시 델리게이트 함수를 호출하도록 Adjust SDK를 구성할 수 있습니다. 이 델리게이트 함수는 딥링크를 문자열(string) 인수로 수신합니다.

딥링크를 열려면 델리게이트 함수에서 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의 어트리뷰션 데이터를 딥링크에 추가하는 방법을 참조하시기 바랍니다.

사용자를 리어트리뷰션하려면 앱에서 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());
}

링크 해석(resolution)

일부 이메일 서비스 제공자(ESP)는 마케팅 캠페인에 대해 자체 커스텀 트래킹 도메인을 사용합니다. 커스텀 도메인을 통해 클릭을 트래킹해야 하는 경우, 해당 링크를 해석하기 위해 SDK를 설정해야 합니다. 이를 위해 AdjustLinkResolution 클래스의 resolveLink 메서드를 호출합니다. Adjust SDK는 이후 딥링크를 열 때 해당 커스텀 링크를 해석합니다. 이를 통해 이메일 트래킹 캠페인과의 상호작용을 기록할 수 있습니다.

resolveLinkWithUrl 메서드는 다음의 파라미터를 사용합니다:

  • url - 앱을 연 딥링크
  • resolveUrlSuffixArray - 해석(resolved)이 필요한 구성된 캠페인의 커스텀 도메인.
  • adjustLinkResolutionCallback - 최종 URL을 포함하는 콜백

메서드는 딥링크를 resolveUrlSuffixArray의 도메인에 대해 확인합니다. 일치하는 것이 없는 경우 딥링크 URL을 그대로 전달합니다. 일치하는 것이 있는 경우 링크를 해석하고, 결과 딥링크를 반환합니다. 이후 이를 callback 파라미터에 저장합니다. 반환된 딥링크를 사용하여 사용자를 리어트리뷰션할 수 있습니다. 이를 위해 딥링크를 Adjust.appWillOpenUrl 메서드에 전달합니다.

참고:
Adjust SDK는 URL을 해석할 때 최대 10개의 리다이렉트를 따릅니다. 이는 callback URL로서 사용한 가장 마지막 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());
    }
});