레거시 API

요약: 딥링킹과 디퍼드 딥링킹을 위한 레거시 방법입니다. 참고: 레거시가 아닌 UDL 방법을 사용하는 것이 좋습니다.

딥링킹을 사용하면 마케터는 앱을 열자마자 새 사용자 및 기존 사용자를 앱의 특정 인앱 액티비티(예: 앱의 특정 페이지)에 보내는 링크를 생성할 수 있습니다. 디퍼드 딥링킹은 앱을 사용하지 않고 새 사용자를 먼저 앱 스토어로 연결하여 앱을 다운로드할 수 있도록 하고 이후 특정 인앱 환경으로 연결합니다.

14941494

딥링킹

Overview

딥링킹은 모바일 사용자를 앱의 특정 액티비티 또는 콘텐츠로 안내합니다.

This in-app routing to a specific activity in the app is possible due to the deep_link_value that is passed to the app when the OS opens the app and the onAppOpenAttribution method is called. AppsFlyer's OneLink ensures that the correct value is passed along with the user's click, thus personalizing the user’s app experience.

Only the deep_link_value is required for deep linking. However, other parameters and values (such as custom attribution parameters) can also be added to the link and returned by the SDK as deep linking data.

The marketer and developer must coordinate regarding desired app behavior and deep_link_value. The marketer uses the parameters to create deep links, and the developer customizes the behavior of the app based on the value received.

앱스플라이어 SDK는 사용자가 클릭한 링크에서 파라미터를 반환하며, 앱에서 파라미터를 올바르게 처리하고 인앱 라우팅 및 링크에서 데이터를 맞춤 설정하는 것은 개발자의 책임입니다.

동작 방식은 다음과 같습니다.

19201920
  1. 사용자가 원링크의 짧은 URL을 클릭합니다.
  2. 안드로이드는 AndroidManifest.xml에 있는 관련 액티비티를 기반으로 앱을 실행합니다.
  3. 앱스플라이어 SDK가 앱 내에서 트리거됩니다.
  4. 앱스플라이어 SDK가 원링크 데이터를 검색합니다.
    • 짧은 URL에서, 데이터는 앱스플라이어 서버의 짧은 URL 리졸버 API에서 가져옵니다.
    • 긴 URL에서 데이터는 긴 URL에서 바로 가져옵니다.
  5. AppsFlyer SDK triggers onAppOpenAttribution() with the retrieved parameters and cached attribution parameters (e.g. install_time).
  6. Asynchronously, onConversionDataSuccess() is called, holding the full cached attribution data. (You can exit this function by checking if is_first_launch is true.)
  7. onAppOpenAttribution() attributionData 맵을 사용하여 앱에서 다른 액티비티를 발송하고 관련 데이터를 전달합니다.
    • 이렇게 하면 사용자에게 맞춤 경험을 생성하며, 이는 원링크의 주요 목적입니다.

Procedures

To implement the onAppOpenAttribution 메서드를 구현하고 파라미터 동작을 설정하려면, 다음 절차 체크리스트의 동작을 완료해야 합니다.

절차 체크리스트
1. Deciding app behavior and deep_link_value (and other parameter names and values) - with the marketer
2. Planning method input, i.e. deep_link_value (and other parameter names and values) - with the marketer
3. Implementing the onAppOpenAttribution() logic
4. Implementing the onAttributionFailure() logic

앱 작동 결정하기

링크를 누를 때 앱 동작을 결정하는 방법:

마케터로부터 링크를 클릭할 때 예상하는 동작을 얻습니다.

메서드 입력 계획

When a OneLink is clicked and the user has the app installed on their device, the onAppOpenAttribution method is called by the AppsFlyer SDK. This is referred to as a retargeting re-engagement.

The onAppOpenAttribution 메서드는 맵 <String, String>과 같은 입력으로 변수를 가져옵니다.
입력 데이터 구조는 여기에 설명되어 있습니다.

The marketer and developers need to plan the deep_link_value (and possible other parameters and values) together based on the desired app behavior when the link is clicked.

To plan the deep_link_value, and other parameter names and values based on the expected link behavior:

  1. 원하는 앱 동작을 구현하려면 필요한 파라미터와 값을 마케터에게 알립니다.
  2. Decide on naming conventions for the deep_link_value and other parameters and values.
    Note: Custom parameters will not appear in raw data collected in AppsFlyer.

📘

마케팅 담당자와 개발자는 주요 활동의 방법에 대한 최적의 장기 시스템을 deep_link_value (and any other parameters/values) to minimize additional app updates.

The deep_link_value can be based on a SKU, post ID, path, or anything else. We strongly recommend agreeing on a system that allows for you to enter dynamic values on your chosen parameter, so you can generate many different deep links that go to different content within the app, without any further changes to the app code by the developers.

See the following URL examples. The deep_link_value of a fruit type was chosen by the marketer and developer together. And the developers made the values dynamic, so the marketer could enter any fruit without the need for further work by the dev team.

https://onelink-sample-app.onelink.me/H5hv?pid=Email&c=fruit_of_the_month**&deep_link_value=apples**...
https://onelink-sample-app.onelink.me/H5hv?pid=Email&c=fruit_of_the_month**&deep_link_value=bananas**...
https://onelink-sample-app.onelink.me/H5hv?pid=Email&c=fruit_of_the_month**&deep_link_value=peaches**...

onAppOpenAttribution() 로직 구현하기

The deep link opens the onAppOpenAttribution 함께 결정해야 합니다. 해당 deep_link_value and other parameters in the method input are used to implement the specific user experience when the application is opened.

로직을 구현하는 방법:

  1. 선택한 파라미터와 값을 기반으로 로직을 구현합니다. 아래 코드 예시를 참고하십시오.
  2. 완료되면 앱이 적절하게 동작하는지 마케터에게 알립니다.

📘

샘플 코드

@Override
  public void onAppOpenAttribution(Map<String, String> attributionData) {
  if (!attributionData.containsKey("is_first_launch"))
    Log.d(LOG_TAG, "onAppOpenAttribution: This is NOT deferred deep linking");
  for (String attrName : attributionData.keySet()) {
    String deepLinkAttrStr = attrName + " = " + attributionData.get(attrName);
    Log.d(LOG_TAG, "Deeplink attribute: " + deepLinkAttrStr);
  }
  Log.d(LOG_TAG, "onAppOpenAttribution: Deep linking into " + attributionData.get("deep_link_value"));
  goToFruit(attributionData.get("deep_link_value"), attributionData);
}

@Override
  public void onAttributionFailure(String errorMessage) {
  Log.d(LOG_TAG, "error onAttributionFailure : " + errorMessage);
}

private void goToFruit(String fruitName, Map<String, String> dlData) {
    String fruitClassName = fruitName.concat("Activity");
    try {
        Class fruitClass = Class.forName(this.getPackageName().concat(".").concat(fruitClassName));
        Log.d(LOG_TAG, "Looking for class " + fruitClass);
        Intent intent = new Intent(getApplicationContext(), fruitClass);
        if (dlData != null) {
            // Map is casted HashMap since it is easier to pass serializable data to an intent
            HashMap<String, String> copy = new HashMap<String, String>(dlData);
            intent.putExtra(DL_ATTRS, copy);
        }
        startActivity(intent);
    } catch (ClassNotFoundException e) {
        Log.d(LOG_TAG, "Deep linking failed looking for " + fruitName);
        e.printStackTrace();
    }
}

⇲ Github 링크: Java

📘

참고

onAppOpenAttribution 앱이 백그라운드에서 실행 중이고 애플리케이션 LaunchMode가 표준이 아니면 호출되지 않습니다.

이를 고치려면, 애플리케이션이 비표준 LaunchMode를 사용하는 경우, 대체된 메서드에서 인텐트 값을 설정하기 위해 setIntent(intent)  메서드를 호출합니다.

import android.content.Intent;
...
...
...
@Override
protected void onNewIntent(Intent intent) 
{ 
  super.onNewIntent(intent);     
  setIntent(intent);
}

onAttributionFailure() 로직 구현하기

The onAttributionFailure method is called whenever the call to onAppOpenAttribution fails. The function should report the error and create an expected experience for the user.

To implement the onAttributionFailure 메서드:

다음 코드를 구현합니다.

@Override
public void onAttributionFailure(String errorMessage) {
    Log.d(LOG_TAG, "error onAttributionFailure : " + errorMessage);
}

⇲ Github 링크: Java

디퍼드 딥링킹

Overview

디퍼드 딥링킹은 새로운 사용자를 먼저 올바른 앱스토어로 이동시켜 앱을 설치하도록 하고, 처음 앱을 연 후에는 특정 애플리케이션 환경(예: 앱 내의 특정 페이지)으로 이동시킵니다.

When the user first launches the app, the onConversionDataSuccess callback function receives both the conversion data of the new user, and OneLink data. The OneLink data makes in-app routing possible due to the deep_link_value that is passed to the app when the OS opens the app.

Only the deep_link_value is required for deep linking. However, other parameters and values (such as custom attribution parameters) can also be added to the link and returned by the SDK as deep linking data. The AppsFlyer OneLink ensures that the correct parameters are passed along with the user's click, thus personalizing the user’s app experience.

The marketer and developer must coordinate regarding desired app behavior and deep_link_value. The marketer uses the parameters to create deep links, and the developer customizes the behavior of the app based on the value received.

앱에서 파라미터를 올바르게 처리하고 인앱 라우팅 및 링크에서 데이터를 맞춤 설정하는 것은 개발자의 책임입니다.

동작 방식은 다음과 같습니다.

19201920
  1. 사용자가 앱을 설치하지 않은 기기에서 원링크를 클릭합니다.
  2. 앱스플라이어가 클릭을 등록하고 사용자를 올바른 앱스토어나 랜딩 페이지로 리디렉션합니다.
  3. 사용자가 애플리케이션을 설치하고 이를 실행합니다.
  4. 앱스플라이어 SDK가 초기화되고, 설치는 앱스플라이어 서버에서 어트리뷰트됩니다.
  5. The SDK triggers the onConversionDataSuccess method. The function receives input that includes both the deep_link_value, and the attribution data/parameters defined in the OneLink data.
  6. 파라미터는 is_first_launch has the value true, 이는 디퍼드 딥링크 흐름을 나타냅니다.
    개발자는 함수에 수신된 데이터를 사용하여 onConversionDataSuccess 애플리케이션의 첫 번째 실행을 위해 사용자를 위한 개인화된 환경을 만듭니다.

Procedures

To implement the onConversionDataSuccess method and set up the parameter behaviors, the following action checklist of procedures need to be completed.

절차 체크리스트
1. Deciding app behavior on first launch, and deep_link_value (and other parameter names and values) - with the marketer
2. Planning method input, i.e. deep_link_value (and other parameter names and values) - with the marketer
3. Implementing the onConversionDataSuccess() logic
4. Implementing the onConversionDataFail() logic

처음 실행 시 앱 작동 결정하기

처음 실행 시 앱 작동을 결정하는 방법:

마케터로부터 링크를 클릭하고 처음으로 앱을 실행할 때 링크의 예상 동작을 얻습니다.

메서드 입력 계획

For deferred deep linking, the onConversionDataSuccess method input must be planned and the input decided in the previous section (for deep linking) is made relevant for the first time the app is launched.

The onConversionDataSuccess method gets the deep_link_value Map <Strong, Object>와 같은 다른 변수들을 입력합니다.

맵에는 다음과 같은 두 가지 유형의 데이터가 있습니다.

  • 어트리뷰션 데이터
  • Data defined by the marketer in the link (deep_link_value and other parameters and values)
    Other parameters can be either:
    • 앱스플라이어 공식 파라미터.
    • 마케터와 개발자가 함께 정한 파라미터와 값.
    • 입력 데이터 구조는 여기에 설명되어 있습니다.

The marketer and developers need to plan the deep_link_value (and other possible parameters and values) together based on the desired app behavior when the link is clicked.

To plan the deep_link_value, and other parameter names and values based on the expected link behavior:

  1. 원하는 앱 동작을 구현하려면 필요한 파라미터와 값을 마케터에게 알립니다.
  2. Decide on naming conventions for the deep_link_value and other parameters and values.
    Note:
    • 사용자정의 파라미터는 앱스플라이어에서 수집된 로데이터에 표시되지 않습니다.
    • 전환 데이터는 소문자 "n"을 포함해 "name"으로 명명된 사용자정의 파라미터를 반환하지 않습니다.

onConversionDataSuccess() 로직 구현하기

When the app is opened for the first time, the onConversionDataSuccess method is triggered in the main activity. The deep_link_value and other parameters in the method input are used to implement the specific user experience when the app is first launched.

로직을 구현하는 방법:

  1. 선택한 파라미터와 값을 기반으로 로직을 구현합니다. 아래 코드 예시를 참고하십시오.
  2. 완료되면 앱이 적절하게 동작하는지 마케터에게 알립니다.

📘

샘플 코드

@Override
 public void onConversionDataSuccess(Map<String, Object> conversionData) {
     for (String attrName : conversionData.keySet())
         Log.d(LOG_TAG, "Conversion attribute: " + attrName + " = " + conversionData.get(attrName));
     String status = Objects.requireNonNull(conversionData.get("af_status")).toString();
     if(status.equals("Non-organic")){
         if( Objects.requireNonNull(conversionData.get("is_first_launch")).toString().equals("true")){
             Log.d(LOG_TAG,"Conversion: First Launch");
             if (conversionData.containsKey("deep_link_value")){
                 Log.d(LOG_TAG,"Conversion: This is deferred deep linking.");
                 //  TODO SDK in future versions - match the input types
                 Map<String,String> newMap = new HashMap<>();
                 for (Map.Entry<String, Object> entry : conversionData.entrySet()) {
                         newMap.put(entry.getKey(), String.valueOf(entry.getValue()));
                 }
                 onAppOpenAttribution(newMap);
             }
         } else {
             Log.d(LOG_TAG,"Conversion: Not First Launch");
         }
     } else {
         Log.d(LOG_TAG,"Conversion: This is an organic install.");
     }
 }

⇲ Github 링크: Java

onConversionDataFailure() 로직 구현하기

The onConversionDataFailure method is called whenever the call to onConversionDataSuccess fails. The function should report the error and create an expected experience for the user.

To implement the onConversionDataFailure 메서드:

다음 코드를 구현합니다.

@Override
public void onConversionDataFail(String errorMessage) {
    Log.d(LOG_TAG, "error getting conversion data: " + errorMessage);
}

⇲ Github 링크: Java

공통 데이터 구조

이 섹션에는 원링크가 입력으로서 전달할 수 있는 가능한 파라미터와 데이터 구조에 대한 정보가 포함되어 있습니다.

Input parameters

다음 표에는 원링크가 입력으로 전달 가능한 파라미터를 나열합니다.

입력 맵에는 다음과 같은 두 가지 유형의 데이터가 있습니다.

  • 어트리뷰션 데이터
  • 링크에서 마케터가 정의한 데이터(파라미터와 값)
    파라미터는 다음 중 하나입니다.
    • 앱스플라이어 공식 파라미터.
    • 마케터와 개발자가 함께 정한 파라미터와 값.

📘

참고

  • 다음 표는 앱스플라이어 SDK 5.4.1 이상과 관련이 있습니다. 이전 SDK 버전에서는 파라미터를 표시하거나 이름을 바꾸지 못할 수 있습니다.
  • 더 이상 사용되지 않는 것으로 표시되지 않은 파라미터는 모든 원링크 유형과 관련이 있습니다.
    • 단축 URL
    • 긴 URL
    • 모든 OS의 링크:
      • 안드로이드 앱 링크
      • 유니버설 링크
      • URI 스킴(iOS와 안드로이드 모두)
파라미터 이름유형설명설명
af_dp문자열URI 스킴 URL.앱 링크로 폴백합니다.
예: afbasicapp://mainactivity
링크문자열딥링크를 수행하는 데 사용된 전체 링크입니다.예: https://onelink-basic-app.onelink.me/H5hv?pid=Email&c=fruit_of_the_month
deep_link_value문자열사용자가 이동하게 되는 특정 인앱 콘텐츠의 값 이름입니다.
pid (media source)문자열원링크의 미디어소스(예: 이메일, SMS, 소셜미디어)
install_time문자열최초 앱 실행 시각.사용 중단
예: 2020-05-06 13:51:19
scheme문자열URL의 첫 번째 단어로서 인터넷상의 리소스에 액세스하는 데 사용될 프로토콜을 식별합니다. 예: mygreatapp://mainactivity or https://killerapp.onelink.me/coolactivity/H7JK사용 중단
Never use http or https for URI schemes
host문자열리소스를 보유하는 호스트를 식별합니다. 예: mygreatapp://mainactivity or
https://**killerapp.onelink.me**/coolactivity/H7JK
사용 중단
path문자열웹 클라이언트가 액세스하려는 호스트의 특정 리소스입니다. 예: https://killerapp.onelink.me/coolactivity/**H7JK**사용 중단
URI 스킴과 관련이 없음
shortlink문자열원래 링크보다 훨씬 적은 수의 문자가 있는 단축된 URL. 예: https://killerapp.onelink.me/coolactivity/H7JK/**checkitout**
af_web_id문자열유저 중심 분석 토큰
af_status문자열사용 중단
URI 시나리오에서 유일하게 전달됩니다.
af_deeplinkBoolean사용 중단
URI 시나리오에서 유일하게 전달됩니다.
c (campaign)문자열마케팅 캠페인의 이름입니다.마케터가 앱스플라이어 대시보드에서 설정한 값입니다.
is_retargetingBoolean리타게팅 캠페인의 일부로 푸시 알림을 기록합니다.이 값은 마케터가 설정합니다.
af_ios_url문자열관련이 없는 경우에도 안드로이드 기기에도 전달됩니다.
af_android_url문자열안드로이드 기기에서 딥링킹이 실패할 시 폴백 URL입니다.
af_sub[1-5]문자열광고주가 사전 정의한 선택적 파라미터입니다.마케터가 앱스플라이어 대시보드에서 설정한 값입니다.
인앱 라우팅과 관련된 파라미터 전달 시 권장합니다.
af_adset문자열광고 세트는 캠페인과 광고 사이에 있는 중간 수준입니다.앱스플라이어의 대시보드에서 마케터가 설정한 값
af_channel문자열광고가 분포되는 미디어소스 채널 예: UAC_Search, UAC_Display, 인스타그램, Facebook Audience Network 등.앱스플라이어의 대시보드에서 마케터가 설정한 값
ad_adname문자열마케터/퍼블리셔가 제공하는 광고 이름.앱스플라이어의 대시보드에서 마케터가 설정한 값
af_cost_currency문자열ISO-4217을 따르는 3자 통화 코드. 예: USD, KRW, EUR
[기본]: USD
앱스플라이어의 대시보드에서 마케터가 설정한 값
af_cost_value문자열비용 통화를 이용한 비용 값.앱스플라이어의 대시보드에서 마케터가 설정한 값
af_click_lookback문자열룩백 클릭 어트리뷰션 기간의 설정 가능한 일수날짜 수.앱스플라이어의 대시보드에서 마케터가 설정한 값
af_force_deeplinkBooleanaf_dp 값에 지정된 액티비티로 강제 딥링킹합니다.iOS만 해당.
관련이 없는 경우에도 안드로이드에 전달됩니다.

Android sample payloads

앱 링크, URI 스킴 및 디퍼드 딥링킹에 대한 다음 샘플 페이로드를 참조하세요. 샘플에는 원링크 사용자정의 링크 설정 페이지의 모든 파라미터에 데이터가 포함되어 있는 경우, 이와 관련된 전체 페이로드가 포함되어 있습니다.

일러두기: 페이로드가 맵으로 반환됩니다. 그러나 명확성을 위해 다음과 같은 샘플 페이로드가 JSON 양식으로 표시됩니다.

앱 링크

다음에 입력합니다. onAppOpenAttribution(Map<String, String> attributionData)

{
    "af_dp": "afbasicapp://mainactivity",
    "af_ios_url": "https://isitchristmas.com/",
    "fruit_name": "apples",
    "c": "fruit_of_the_month",
    "media_source": "Email",
    "link": "https://onelink-basic-app.onelink.me/H5hv/6d66214a",
    "pid": "Email",
    "af_cost_currency": "USD",
    "af_sub1": "my_sub1",
    "af_click_lookback": "20d",
    "af_adset": "my_adset",
    "af_android_url": "https://isitchristmas.com/",
    "af_sub2": "my_sub2",
    "fruit_amount": 26,
    "af_cost_value": 6,
    "campaign": "fruit_of_the_month",
    "af_channel": "my_channel",
    "af_ad": "my_adname",
    "is_retargeting": "true"
}
{
    "af_dp": "afbasicapp://mainactivity",
    "install_time": "2020-08-06 06:56:02",
    "fruit_name": "apples",
    "af_ios_url": "https://my_ios_lp.com",
    "media_source": "Email",
    "scheme": "https",
    "link": "https://onelink-basic-app.onelink.me/H5hv?pid=Email&c=fruit_of_the_month&af_channel=my_channel&af_adset=my_adset&af_ad=my_adname&af_sub1=my_sub1&af_sub2=my_sub2&fruit_name=apples&fruit_amount=16&af_cost_currency=USD&af_cost_value=6&af_click_lookback=20d&af_dp=afbasicapp%3A%2F%2Fmainactivity&af_ios_url=https%3A%2F%2Fmy_ios_lp.com&af_android_url=https%3A%2F%2Fmy_android_lp.com",
    "af_cost_currency": "USD",
    "af_sub1": "my_sub1",
    "af_click_lookback": "20d",
    "path": "/H5hv",
    "af_adset": "my_adset",
    "af_android_url": "https://my_android_lp.com",
    "af_sub2": "my_sub2",
    "fruit_amount": 16,
    "af_cost_value": 6,
    "host": "onelink-basic-app.onelink.me",
    "campaign": "fruit_of_the_month",
    "af_channel": "my_channel",
    "af_ad": "my_adname"
}

URI 스킴

다음에 입력합니다. onAppOpenAttribution(Map<String, String> attributionData)

{
    "scheme": "afbasicapp",
    "link": "afbasicapp://mainactivity?af_ad=my_adname&af_adset=my_adset&af_android_url=https%3A%2F%2Fmy_android_lp.com&af_channel=my_channel&af_click_lookback=25d&af_cost_currency=NZD&af_cost_value=5&af_deeplink=true&af_dp=afbasicapp%3A%2F%2Fmainactivity&af_force_deeplink=true&af_ios_url=https%3A%2F%2Fmy_ios_lp.com&af_sub1=my_sub1&af_sub2=my_sub2&af_web_id=367f81fb-59a4-446a-ac6c-a68d2ee9447c-p&campaign=my_campaign&fruit_amount=15&fruit_name=apples&is_retargeting=true&media_source=Email&shortlink=9270d092",
    "af_cost_currency": "NZD",
    "af_click_lookback": "25d",
    "af_deeplink": true,
    "path": "",
    "af_android_url": "https://my_android_lp.com",
    "af_force_deeplink": true,
    "fruit_amount": 15,
    "host": "mainactivity",
    "af_channel": "my_channel",
    "shortlink": "9270d092",
    "af_dp": "afbasicapp://mainactivity",
    "install_time": "2020-08-06 06:56:02",
    "af_ios_url": "https://my_ios_lp.com",
    "fruit_name": "apples",
    "af_web_id": "367f81fb-59a4-446a-ac6c-a68d2ee9447c-p",
    "media_source": "Email",
    "af_status": "Non-organic",
    "af_sub1": "my_sub1",
    "af_adset": "my_adset",
    "af_sub2": "my_sub2",
    "af_cost_value": 5,
    "campaign": "my_campaign",
    "af_ad": "my_adname",
    "is_retargeting": true
}
{
    "af_dp": "afbasicapp://mainactivity",
    "install_time": "2020-08-06 06:56:02",
    "af_ios_url": "https://my_ios_lp.com",
    "fruit_name": "apples",
    "af_web_id": "367f81fb-59a4-446a-ac6c-a68d2ee9447c-p",
    "scheme": "afbasicapp",
    "media_source": "Email",
    "link": "afbasicapp://mainactivity?af_ad=my_adname&af_adset=my_adset&af_android_url=https%3A%2F%2Fmy_android_lp.com&af_channel=my_channel&af_click_lookback=25d&af_cost_currency=NZD&af_cost_value=5&af_deeplink=true&af_dp=afbasicapp%3A%2F%2Fmainactivity&af_ios_url=https%3A%2F%2Fmy_ios_lp.com&af_sub1=my_sub1&af_sub2=my_sub2&af_web_id=367f81fb-59a4-446a-ac6c-a68d2ee9447c-p&campaign=my_campaign&fruit_amount=15&fruit_name=apples&is_retargeting=true&media_source=Email",
    "af_cost_currency": "NZD",
    "af_status": "Non-organic",
    "af_click_lookback": "25d",
    "af_sub1": "my_sub1",
    "af_deeplink": true,
    "path": "",
    "af_android_url": "https://my_android_lp.com",
    "af_adset": "my_adset",
    "fruit_amount": 15,
    "af_sub2": "my_sub2",
    "host": "mainactivity",
    "af_cost_value": 5,
    "campaign": "my_campaign",
    "af_channel": "my_channel",
    "af_ad": "my_adname",
    "is_retargeting": true
}

디퍼드 딥링킹

다음에 입력합니다. onConversionDataSuccess(Map<String, Object> conversionData)

{
    "redirect_response_data": null,
    "adgroup_id": null,
    "engmnt_source": null,
    "retargeting_conversion_type": "none",
    "orig_cost": 6.0,
    "af_cost_currency": "USD",
    "is_first_launch": true,
    "af_click_lookback": "20d",
    "af_cpi": null,
    "iscache": true,
    "click_time": "2020-08-12 16:04:50.605",
    "af_android_url": "https://isitchristmas.com/",
    "fruit_amount": 26,
    "is_branded_link": null,
    "match_type": "probabilistic",
    "adset": null,
    "af_channel": "my_channel",
    "campaign_id": null,
    "shortlink": "6d66214a",
    "af_dp": "afbasicapp://mainactivity",
    "install_time": "2020-08-12 16:05:33.750",
    "af_ios_url": "https://isitchristmas.com/",
    "fruit_name": "apples",
    "media_source": "Email",
    "agency": null,
    "af_siteid": null,
    "af_status": "Non-organic",
    "af_sub1": "my_sub1",
    "cost_cents_USD": 600,
    "af_sub5": null,
    "af_adset": "my_adset",
    "af_sub4": null,
    "af_sub3": null,
    "af_sub2": "my_sub2",
    "adset_id": null,
    "esp_name": null,
    "af_cost_value": 6,
    "campaign": "fruit_of_the_month",
    "http_referrer": "android-app://com.slack/",
    "af_ad": "my_adname",
    "is_universal_link": null,
    "is_retargeting": true,
    "adgroup": null
}