# AppsFlyer Pull Raw Data
::: Tip
플랫폼 데이터 통합을 통해 생성된 데이터는 클러스터의 데이터 소비량에 포함된다는 점을 유의하십시오.
:::
# 개요
API 이름 | 통합 유형 | 데이터 세분화 | 어트리뷰션 | 비용 | 수익 | 노출 | 클릭 | 전환 |
---|---|---|---|---|---|---|---|---|
Pull API Raw Data | API | 유저 | ✅ | ✅ | ✅ | ✅ |
Pull API Raw Data (opens new window)를 사용하면 일정 기간 동안 유저 레벨 데이터를 얻을 수 있습니다. 이 통합 계획은 실시간이 필요하지 않은 경우 유저 세부 데이터를 얻는 데 사용되며, 유저 단위의 과거 데이터를 얻는 데 매우 적합합니다.
# 통합 프로세스
- AppsFlyer 클라이언트 SDK (opens new window)와 TE SDK를 연결하고, AF SDK에서 TE의 유저 식별 ID를 설정합니다.
- AppsFlyer 백엔드에 로그인하여, V2.0 API 토큰과 App ID를 획득합니다.
- TE 백엔드에 로그인하여, 서드파티 통합 모듈로 이동한 후 'AppsFlyer Pull Raw Data' 계획을 추가하고 관련 설정을 완료합니다.
- TE 시스템이 데이터 수신 및 리포트 구축을 완료했는지 확인합니다.
# 클라이언트 SDK의 설치
AppsFlyer 데이터를 통합하기 위한 첫 번째 단계는 TE SDK와 AF SDK를 클라이언트 측에서 연결하는 것입니다. AF SDK 내에서 TE 시스템의 유저 식별 ID를 설정합니다.
# 1.1 방법1 (자동 통합)
TIP
만약 TE SDK의 버전이 2.8.0~2.8.1인 경우, 이 솔루션을 직접 사용할 수 있습니다. TE SDK의 버전이 2.8.2 이상인 경우, 서드파티 데이터 플러그인을 설치해야 합니다.
이 솔루션은 자동 통합 솔루션입니다. TE 클라이언트 SDK를 초기화한 후, 아래 코드를 호출하여 활성화하십시오.
자세한 사항은 Android SDK 연결 문서와 iOS SDK 연결 문서를 참조하십시오.
// TE SDK 초기화
ThinkingAnalyticsSDK instance = ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID, TA_SERVER_URL);
// AppsFlyer ID 연동 활성화
instance.enableThirdPartySharing(TDThirdPartyShareType.TD_APPS_FLYER);
// AppsFlyer SDK 초기화
AppsFlyerLib.getInstance().init("appid", null, this);
AppsFlyerLib.getInstance().start(this);
// setCustomerUserId()를 사용하여 게스트 ID를 다시 설정하는 것을 권장합니다.
String distinctId = ThinkingAnalyticsAPI.GetDistinctId();
AppsFlyerLib.getInstance().setcustomerUserId(distinctId);
// 로그인 및 계정 ID 설정 후, 데이터 동기화가 다시 필요합니다 (선택사항).
instance.login("account_id");
instance.enableThirdPartySharing(TDThirdPartyShareType.TD_APPS_FLYER);
TE SDK의 login() 메소드 또는 identify() 메소드를 호출한 경우, enableThirdPartySharing()를 다시 호출하여 데이터를 동기화해야 합니다.
주의: AppsFlyer SDK의 setAdditionalData() 메소드를 호출해야 하는 경우, 이 메소드는 여러 번 호출되어 이전 파라미터가 덮어쓰여집니다. 따라서 파라미터를 TE SDK에 전달하여 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
);
이 솔루션의 원리는 내부적으로 자동으로 AppsFlyer의 setAdditionalData() 메소드를 호출하여 TE 프로젝트의 게스트 ID와 계정 ID를 전달하는 것입니다.
# 1.1 방법2(수동 통합)
수동 통합 솔루션에서는 AppsFlyer SDK에서 setAdditionalData를 사용하여 TE 프로젝트의 게스트 ID와 계정 ID를 설정해야 합니다. 아래는 Java의 코드 예시입니다:
// TE의 방문자 ID를 가져옵니다. TE에서는 #distinct_id에 해당합니다.
String distinctId = ThinkingAnalyticsAPI.GetDistinctId();
// 계정 ID (또는 역할 ID)는 TE에서 #account_id에 해당합니다.
String accountId = "your_account_id";
// 활성화 시 배포
HashMap<String,Object> CustomDataMap = new HashMap<>();
CustomDataMap.put("ta_distinct_id",distinctId);
AppsFlyerLib.getInstance().setAdditionalData(CustomDataMap);
// setCustomerUserId()를 사용하여 게스트 ID를 다시 설정하는 것을 권장합니다.
AppsFlyerLib.getInstance().setcustomerUserId(distinctId);
...
// 등록 시 배포
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가 됩니다.
# API 토큰과 App ID 획득
# 2.1 API 토큰 획득
관리자 계정으로 로그인한 후, AppsFlyer의 사이드바 메뉴에서 'API Access'를 찾아 Pull API Raw Data용 V2.0 API 토큰을 획득하십시오.
# 2.2 App ID 획득
AppsFlyer 백엔드의 'My Apps'에서, 앱의 App ID를 찾을 수 있습니다. Android의 경우 com.으로 시작하며, 예를 들어 com.demoapp.ta입니다. iOS의 경우 id로 시작하며, 예를 들어 id12345678입니다.
# 플랜 구성
AppsFlyer의 API 토큰과 App ID를 획득한 후, TE 시스템에 로그인하여 '서드 파티 통합'에서 새 플랜 설정을 완료할 수 있습니다. 아래는 AppsFlyer Pull Raw Data의 설정 화면입니다. 이 장의 내용에 따라 플랜을 생성하십시오.
# 3.1 인증 정보 설정
[설정] 버튼을 클릭하고, 팝업 내에 App ID와 API Token를 입력하세요.
# 3.2 동기화
[동기화] 모듈에서, TE 시스템이 AppsFlyer Pull API 데이터를 정기적으로 수집하는 규칙을 설정할 수 있습니다. 특정 시간대에 매일 일정 기간 데이터를 수집할 수 있습니다. 수집된 데이터도 데이터 양에 포함되므로, 긴 시간의 데이터를 정기적으로 수집하지 않는 것이 좋습니다.
# 3.3 수집 시간대
기본적으로, UTC+0이 설정되어 있어도, 취득하는 데이터의 시간대를 설정할 수 있습니다.
# 3.4 유저 식별 필드
AppsFlyer Pull Raw Data의 콜백은 사용자 레벨의 데이터이므로, 사용자 식별 규칙을 설정해야 합니다. 즉, AF로부터의 데이터와 #distinct_id 및 #account_id에 해당하는 필드를 연결하는 것입니다. TE 시스템은 이 설정에 기반하여, 콜백 데이터를 변환할 때 이러한 필드를 데이터 내의 사용자 식별 필드로 설정합니다.
만약 앞서 언급한 클라이언트 SDK의 설정 절차를 따르고 있다면, 아래 설정을 사용하십시오:
- 계정 ID: custom_data.ta_account_id
- 게스트 ID: customer_user_id, custom_data.ta_distinct_id
# 3.5 이벤트 데이터의 저장 설정
데이터가 이벤트 형식으로 기록되는지를 제어할 수 있습니다. 닫히면, 데이터는 이벤트 테이블에 기록되지 않으므로, 이 설정을 닫지 마십시오.
# 3.6 유저 속성의 저장 규칙
기본적으로, 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 | 광고 이름 |
[설정 규칙]을 클릭하여 저장 규칙의 설정 페이지로 이동하고, 필요한 변경을 수행하십시오.
[속성 매핑]버튼을 클릭한 후 사용자 속성에 기록해야 할 필드를 추가할 수 있습니다. 또한, 왼쪽의 [규칙] 버튼을 클릭하여 새로운 규칙 세트를 추가할 수도 있습니다. 예를 들어, AF로부터 전송된 수익 데이터에서 광고 수익을 추출하여 'user_add' 방식으로 사용자 속성에 기록하고 각 사용자의 누적 광고 수익을 기록하고 싶은 경우 등입니다.
모든 규칙을 중지함으로써 사용자 속성의 저장을 중지할 수 있습니다.
# 3.7 통합 구성
마지막으로, 데이터 연동의 상세 설정을 통합 구성 모듈에서 제어할 수 있습니다. 데이터의 유형, 취득할 차원, 및 저장 후의 이벤트명 등이 포함됩니다.
통합 설정의 내용은 JSON 형식이며, 아래의 내용에 따라 커스텀 설정을 할 수 있습니다.
API | 이름 | 의미 |
---|---|---|
sink_event | event_mapping | 저장 후의 이벤트는 커스텀이 가능 |
source | report_types | 취득하는 데이터의 유형은, 커스텀이 가능하며, 기본적으로 installs, ad_revenue |
group_by | 데이터의 그룹화, 리스트 타입은 커스텀 가능 | |
extra_params | double_columns | 숫자 타입의 필드 정의는, 여기에 기록된 필드는 숫자 타입으로 데이터베이스에 저장됩니다. 저장 후의 필드명을 입력하십시오. |
기본적으로, Pull API Raw Data는 아래의 데이터를 취득할 수 있습니다.
source.group_by에 필요한 필드를 기입할 수 있습니다. 추가적인 지원 필드에 대해서는, AppsFlyer 공식 웹사이트의 문서 (opens new window)도 확인하실 수 있습니다.
# 3.8 데이터 저장 규칙
Pull Raw Data 데이터 인터페이스는 다양한 데이터를 데이터베이스에 저장합니다. 각종 데이터의 처리 규칙은 다음과 같습니다:
- 설치 데이터
- 유저 획득(UA)만을 포함하는 Installs (opens new window) 데이터와 Organic Installs (opens new window) 데이터를 획득합니다.
- 데이터는 이벤트 형식으로 작성되며, 이벤트 이름은 af_install입니다.
- 데이터 내의 event_time, 즉 이벤트가 발생한 시간을 이벤트의 #event_time으로 사용합니다.
- 기본 유저 속성의 저장 규칙에서, 설치 데이터의 일부 필드가 유저 테이블에 작성됩니다.
- 유저 식별 필드 설정에 기반하여, 유저를 식별합니다. 유저 식별 규칙이 설정되어 있지 않은 경우, 데이터 내의 customer_user_id를 기본 게스트ID로 사용합니다. 유저 식별 필드를 획득할 수 없는 경우, 해당 데이터는 폐기됩니다.
- 모든 필드는 데이터베이스에 저장되며, double_column 내의 필드는 데이터 타입으로 저장되고, 그 외의 필드는 문자열로 저장됩니다.
- Ad Revenue
- Attributed 광고 수익 (opens new window), Organic 광고 수익 (opens new window)의 획득이며, Attributed 광고 수익 (opens new window)에서는 유저 획득(UA)과 리타겟팅을 동시에 획득합니다.
- 데이터는 이벤트 형식으로 작성되며, 이벤트 이름은 af_ad_revenue_raw입니다.
- 데이터 내의 event_time, 즉 이벤트 발생 시간을 이벤트의 #event_time으로 사용합니다.
- 유저 식별 필드 설정에 기반하여, 유저를 식별합니다. 유저 식별 규칙이 설정되어 있지 않은 경우, 데이터 내의 customer_user_id를 기본 게스트ID로 사용합니다. 유저 식별 필드를 획득할 수 없는 경우, 해당 데이터는 폐기됩니다.
- 모든 필드는 데이터베이스에 저장되며, double_column 내의 필드는 데이터 타입으로 저장되고, 그 외의 필드는 문자열로 저장됩니다.
# 3.9 표준화 필드
다음 이벤트 속성은 표준화 처리가 이루어집니다:
메타 필드 | 표준화 필드 | 설명 |
---|---|---|
media_source | te_ads_object.media_source | 미디어 채널 |
monetization_network(모네타이즈) | te_ads_object.media_source | 모네타이즈 채널 |
campaign | te_ads_object.campaign_name | 광고 캠페인 명 |
af_c_id | te_ads_object.campaign_id | 광고 캠페인 ID |
af_adset | te_ads_object.ad_group_name | 광고 그룹명 |
ad_unit(모네타이즈) | te_ads_object.ad_group_name | 모네타이즈 광고의 Unit명 |
af_adset_id | te_ads_object.ad_group_id | 광고 그룹 ID |
af_ad | te_ads_object.ad_name | 광고 명 |
af_ad_id | te_ads_object.ad_id | 광고 ID |
placement(모네타이즈) | te_ads_object.placement | 광고 위치 |
af_cost_value | te_ads_object.cost | 비용 |
af_cost_currency | te_ads_object.currency | 비용 통화 |
event_revenue | te_ads_object.revenue | 수익 |
event_revenue_currency(모네타이즈) | te_ads_object.currency | 수익 통화 |
country_code | te_ads_object.country | 국가 지역 코드 |
platform | te_ads_object.platform | 플랫폼 Android, iOS 등 |
app_id | te_ads_object.app_id | APP ID |
app_name | te_ads_object.app_name | APP 이름 |