# AppsFlyer Push API
::: Tip
주의. 플랫폼 데이터 통합을 통해 생성된 데이터는 클러스터의 데이터 소비량으로 계산됨을 유의하십시오.
:::
# 개요
API 이름 | 통합 유형 | 데이터 세분화 | 어트리뷰션 | 비용 | 수익 | 노출 | 클릭 | 전환 |
---|---|---|---|---|---|---|---|---|
Push API | 콜백 | 유저 | ✅ | ✅ | ✅ | ✅ | ✅ |
Push API (opens new window)는 실시간 AppsFlyer 유저 레벨 데이터를 제공하며, 광고 노출, 클릭, 활성화, 수익 데이터 등이 포함됩니다. 비용 데이터는 AF 플랫폼의 제한으로 인해 얻을 수 없을 수 있습니다.
AppsFlyer 데이터와 연동하기 전에, TE 시스템의 유저 식별 규칙인 #distinct_id와 #account_id의 사양을 사전에 이해하고 인지하십시오.
# 통합 절차
- AppsFlyer (opens new window)의 클라이언트 SDK와 TE SDK에 연결한 후, AF SDK에서 TE의 유저 식별 ID를 설정
- TE에 로그인 후, 서드파티 통합 페이지에서 AppsFlyer의 통합을 설정
- AppsFlyer의 백엔드에 로그인 후, 콜백을 설정
- TE 시스템이 데이터를 정상적으로 수신한 후, 리포트 구축이 완료됨을 확인
# 클라이언트 SDK 설정
AppsFlyer 데이터를 통합하는 첫 번째 단계는 TE의 SDK와 AF의 SDK를 클라이언트 측에서 연결하고, AF의 SDK 내에서 TE 시스템의 유저 식별 ID를 설정하는 것입니다.
# 1.1 방법① (자동 통합)
- TE의 SDK 버전이 2.8.0~2.8.1인 경우, 이 방법을 직접 사용할 수 있습니다.
- TE의 서버 SDK 버전이 2.8.2 이상이면, 서드 파티의 데이터 플러그인을 설치해야 합니다. 자세한 내용은 Android SDK와 iOS SDK을 참조하십시오.
이 플랜은 자동 통합 플랜으로, TE 클라이언트 SDK를 초기 설정한 후, 아래 코드를 호출하여 활성화하십시오.
// TE SDK 초기화
ThinkingAnalyticsSDK instance = ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID, TA_SERVER_URL);
// TE SDK의 AppsFlyer ID 연동 기능 활성화
instance.enableThirdPartySharing(TDThirdPartyShareType.TD_APPS_FLYER);
// setCustomerUserId()를 사용하여 게스트 ID를 다시 설정하는 것을 권장드립니다.
String distinctId = ThinkingAnalyticsAPI.GetDistinctId();
AppsFlyerLib.getInstance().setCustomerUserId(distinctId);
// AppsFlyer SDK 초기화
AppsFlyerLib.getInstance().init("appid", null, this);
AppsFlyerLib.getInstance().start(this);
// TE SDK의 로그인을 호출하여 계정 ID를 설정한 후, AF SDK와 데이터를 다시 동기화해야 합니다.
instance.login("account_id");
instance.enableThirdPartySharing(TDThirdPartyShareType.TD_APPS_FLYER);
TIP
TE SDK의 login() 메소드나 identify() 메소드를 호출한 경우, enableThirdPartySharing()을 다시 호출하여 데이터를 동기화해야 합니다.
AF SDK의 setAdditionalData() 메소드를 호출해야 하는 경우, 이 메소드는 여러 번 호출되면 이전 파라미터를 덮어쓰므로, 아래 코드를 따라 TE SDK에 파라미터를 전달함으로써 내부적으로 파라미터를 결합·병합합니다.
Map<String, Object> additionalData = new HashMap<>();
additionalData.put("af_test_key1", "test1");
additionalData.put("af_test_key2", "test2");
instance.enableThirdPartySharing(
TDThirdPartyShareType.TD_APPS_FLYER,
additionalData
);
이 플랜의 원리는 내부적으로 AF의 setAdditionalData() 메소드를 자동으로 호출하고, TE 프로젝트의 게스트 ID와 계정 ID를 전달하는 것입니다.
# 1.2 방법② (수동 통합)
수동 통합의 경우, AF SDK에서 setAdditionalData()를 사용하여 TE 프로젝트의 게스트 ID와 계정 ID를 설정해야 합니다. 아래는 Android 측의 코드 예시입니다.
// TE SDK 초기화
ThinkingAnalyticsSDK instance = ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID, TA_SERVER_URL);
// TE의 distinct ID를 가져옵니다. TE에서는 #distinct_id에 해당합니다.
String distinctId = ThinkingAnalyticsAPI.GetDistinctId();
// setAdditionalData()를 통해 AF SDK에 distinct ID를 설정합니다.
HashMap<String,Object> CustomDataMap = new HashMap<>();
CustomDataMap.put("ta_distinct_id",distinctId);
AppsFlyerLib.getInstance().setAdditionalData(CustomDataMap);
// setCustomerUserId()를 사용하여 distinct ID를 다시 설정하는 것을 권장합니다.
AppsFlyerLib.getInstance().setCustomerUserId(distinctId);
// AppsFlyer SDK 초기화
AppsFlyerLib.getInstance().init("appid", null, this);
AppsFlyerLib.getInstance().start(this);
...
// TE SDK의 로그인 메소드를 호출하여 계정 ID를 설정한 후, AF SDK와 데이터를 다시 동기화해야 합니다.
String accountId = "your_account_id";
instance.login(accountId);
HashMap<String,Object> CustomDataMap = new HashMap<>();
CustomDataMap.put("ta_distinct_id", distinctId);
CustomDataMap.put("ta_account_id",accountId);
AppsFlyerLib.getInstance().setAdditionalData(CustomDataMap);
위 설정을 마친 후, custom_data
에는 ta_distinct_id와 ta_account_id의 두 필드가 포함되며, customer_user_id
는 게스트 ID입니다.
# TE의 서드파티 통합 설정
SDK 설정이 완료되면, 다음으로 TE에 로그인하여 '서드파티'에서 AppsFlyer의 설정을 완료해야 합니다. 아래는 AppsFlyer의 설정 페이지입니다. '통합 스위치'를 열어 AppsFlyer 설정을 시작하십시오.
# 2.1 유저 식별 시스템과 연관성
AppsFlyer가 반환하는 것은 유저 레벨 데이터이므로, AppsFlyer가 반환하는 데이터와 #distinct_id 및 #account_id에 해당하는 필드를 설정해야 합니다. TE 시스템은 이 설정을 기반으로 반환된 데이터를 변환할 때 이들 필드를 데이터 내의 유저 식별 필드로 설정합니다.
- 계정 ID: custom_data.ta_account_id
- 게스트 ID: customer_user_id, custom_data.ta_distinct_id
# 2.2 이벤트 테이블 저장 설정
SDK 설정을 완료한 후, 다음으로 TE에 로그인하여 '서드파티'에서 AppsFlyer의 설정을 완료해야 합니다. '통합 스위치'를 열어 AppsFlyer 설정을 시작하십시오.
이벤트 데이터 저장을 활성화하는 것이 권장됩니다. 그러나 기본적으로 AF에서 전송된 모든 데이터를 수신합니다. 전송되는 이벤트 유형이 너무 많은 경우, TE 프로젝트의 이벤트 수가 과도하게 증가할 수 있습니다. 따라서 AF 플랫폼에서 콜백 설정을 할 때 필요한 이벤트만 선택하십시오.
# 2.3 유저 속성 저장
기본적으로, TE 시스템은 AF 콜백 데이터의 어트리뷰션 필드를 자동으로 표준화된 유저 속성에 씁니다. 아래는 유저 속성에 쓰여지는 필드와 그 의미입니다.
AppsFlyer 필드 | 표준화 필드 | 설명 |
---|---|---|
media_source | te_ads_object.media_source | 미디어 소스 |
campaign | te_ads_object.campaign_name | 광고 캠페인 이름 |
af_adset | te_ads_object.ad_group_name | 광고 그룹 이름 |
af_ad | te_ads_object.ad_name | 광고 이름 |
[구성 규칙]을 클릭하여 저장 규칙 설정 페이지로 이동하여 필요한 변경을 하십시오.
이벤트에서 유저 속성의 변경이 가능합니다. 유저 속성이 자주 쓰여지는 것을 피하고 싶다면 [모든 이벤트 포함]을 OFF로 설정한 후, 소스 이벤트 이름을 'install'로 변경할 수 있습니다. 이러한 설정에서는 TE 시스템이 AF에서 반환된 설치 이벤트에서 필요한 필드만 추출한 후 그것들을 씁니다. 기본적으로 user_setOnce 방식으로 저장되므로, 처음 저장된 데이터만 저장됩니다.
[속성 매핑] 버튼을 클릭한 후 유저 속성에 쓸 필요가 있는 필드를 추가할 수 있습니다. 또한, 왼쪽의 [규칙] 버튼을 클릭하여 새로운 규칙 세트를 추가할 수도 있습니다. 예를 들어, AF에서 전송된 수익 데이터에서 광고 수익을 추출하여 'user_add' 방식으로 유저 속성에 쓰고 각 유저의 누적 광고 수익을 기록하고 싶은 경우 등입니다.
모든 규칙을 중지함으로써 유저 속성 저장을 중지할 수 있습니다.
# 2.4 데이터 소스
데이터 소스에는 TE 시스템이 AF로부터 데이터를 수신하기 위한 주소가 표시됩니다. 이 주소를 직접 복사하여 AF 콜백 설정을 할 때 이 주소를 입력하십시오.
이 주소가 표시되지 않는 경우, 오른쪽 상단의 메뉴 '프로젝트 관리' - '프로젝트 설정' - '데이터 전송 주소'로 이동하여 공용 네트워크 주소를 설정하십시오. 이 주소는 TE SDK에서 설정된 데이터 전송 목적지 주소입니다. 설정 후 AppsFlyer 설정 화면으로 돌아와 '데이터 소스'에서 주소를 복사하십시오.
# AppsFlyer Push API 설정
TE 측 설정이 완료된 후, 관리자 계정으로 AF 백엔드에 로그인하여 'Integration' - 'API Access'에서 Push API 섹션에 따라 콜백 주소를 설정하십시오.
- PushAPI Version
- 버전 2.0을 선택해 주세요.
- HTTP method
- TE 시스템은 POST와 GET 두 가지 방식으로 전송을 지원하지만, POST 방식을 선택하는 것이 권장됩니다.
- EndpointURL
- TE 시스템의 백엔드 AppsFlyer 설정 페이지의 '데이터 소스'에서 엔드포인트 주소를 얻어 직접 붙여넣으십시오.
- Event Messages
- 최소한 '설치' 이벤트를 선택해야 합니다. 다른 앱 내 이벤트를 반환하는 경우, 여기에서 체크하고 콜백의 앱 내 이벤트에 이벤트 이름(In-app events)을 입력하십시오.
- Message Fields
메시지 필드에는 최소한 다음 정보가 포함되어야 합니다:
- 어트리뷰션 관련 필드: media_source, channel, af_adset, af_ad 등
- 유저 식별 ID: custom_data, customer_user_id, event_value 등
- 이벤트 속성 또는 유저 속성으로 필요한 필드
- 이벤트 관련 필드: event_time_selected_timezone
- In-app events
필요에 따라 이벤트의 콜백을 선택하고 [Event Messages]에서 Install in-app events를 체크하십시오.
DANGER
Facebook 데이터를 콜백해야 하는 경우, AF 백엔드의 Facebook 채널 설정에서 Facebook 데이터 사용 약관(Terms of Service (opens new window))에 동의해야 합니다. 그렇지 않으면 Facebook의 유저 레벨 데이터를 얻을 수 없습니다.
# 후속 사용
# 4.1 데이터 저장 검증
'데이터 관리' 페이지에서 이벤트의 추적 및 유저 속성의 생성 상태를 확인할 수 있습니다. 또한, 이벤트 분석 모델이나 유저 속성 분석 모델 등의 분석 방법을 사용하여 데이터가 올바르게 저장되었는지를 확인할 수도 있습니다.