리치 인앱 이벤트를 통해 광고주는 앱 설치 후 이벤트를 기록하고 사용자 유입 미디어 소스로 어트리뷰트 할 수 있습니다.
사용자가 등록, 튜토리얼 완료, 장바구니 추가 또는 구매를 하면, 인앱 이벤트 데이터에 세부 정보와 함께 이벤트를 기록할 수 있습니다.
리치 인앱 이벤트는 앱 사용자의 가치와 다양한 미디어 소스에서 유입된 트래픽의 품질을 결정하는 이상적인 도구입니다. 리치 인앱 이벤트 구현은 선택 사항이지만, 이 기능의 구현을 권장합니다. 또한 로데이터 정렬이 편리하도록, 모든 플랫폼에서 동일한 인앱 이벤트 이름과 구조를 정의하고 사용하는 것을 추천드립니다.
사용자의 개인 정보 보호
- 앱스플라이어는 앱과 앱 사용자의 개인 정보를 소중하게 생각합니다.
- 앱스플라이어는 개인 식별 정보(Personally Identifiable Information, PII)를 수신하거나, 수집하지 않습니다.
- 사용자의 개인 정보를 보호하려면 인앱 이벤트 값(event value)을 입력할 때, 직접 식별 가능한 정보로 채우지 마십시오. 예를 들어, 이메일 주소, 이름, 신원 증명 번호 및 일부 지역의 우편 번호.
logEvent API
인앱 이벤트는 이벤트 이름과 이벤트 파라미터로 구성되어 있습니다.
이벤트 이름 문자열은 원하는 대로 사용할 수 있습니다. 그런데 앱스플라이어 SDK에는 열거 및 정의를 통해 추천하는 이벤트 이름을 포함하고 있습니다. (이벤트 유형 탭에서 권장 이벤트와 파라미터 이름 목록 참조)
이벤트 이름은 대소문자를 구분합니다. 예를 들어 af_purchase와 af_PURCHASE는 로데이터 상 서로 다른 두 이벤트입니다. 하지만, 종합 리포트 (예: 개요, 이벤트)에서는 하나의 이벤트로 표시될 수 있습니다. 따라서, 이벤트와 파라미터 이름은 소문자로만 사용하는 것을 추천합니다.
이벤트 값(event value)의 길이는 1,000자로 제한됩니다. 이 한도를 초과하지 마십시오. 그렇게 하면 잘릴 수 있습니다.
구문:
public static void logEvent(Context context, String eventName, Map eventValues)
컨텍스트getApplicationContext()
사용- eventName
- 이벤트 이름을 정의하는 문자열
- eventValues
- 리치 이벤트를 구성하는 이벤트 파라미터 맵
- (void) logEvent:(NSString *)eventName withValues:(NSDictionary*)values
eventName- 이벤트 이름을 정의하는 문자열
- values
- 리치 이벤트를 구성하는 이벤트 파라미터 딕셔너리
하이브리드 앱 용 인앱 이벤트
네이티브 뷰와 HTML 콘텐츠가 결합된 하이브리드 앱도 인앱 이벤트를 기록할 수 있습니다. 하지만, SDK는 네이티브 부분에서만 이벤트를 발송할 수 있기때문에, 개발자는 모든 이벤트 데이터를 네이티브 코드로 전달해야만 합니다. 안내를 위해 하이브리드 앱 용 인앱 이벤트 가이드를 참고하십시오.
주의
각 네트워크마다 이벤트 이름으로 허용하는 문자에 대해 제한이 있습니다. 문제를 예방하기 위해서, 인앱 이벤트 이름으로 영문 소문자 및 숫자(a-z 및 0-9)만 사용하십시오.
인앱 이벤트 유형
다음 섹션에서는 페이스북, 트위터, 크리테오, 구글 애즈 및 스냅챗과의 파라미터 매핑 및 각 이벤트 유형의 권장 구조에 대해 설명합니다.
- 다음 파라미터는 리치 인앱 이벤트 값의 일부분이며 로데이터 보고서에서만 사용할 수 있습니다. 로데이터는 프리미엄 기능입니다.
- 참조 URL을 이벤트 값(event value)으로 포함하는 경우, 반드시 인코딩 된 URL이어야 합니다.
참고
안드로이드 (Java), iOS (Obj-C 및 Swift), 유니티의 경우 업종별 코드 스니펫에 대해 이 가이드의 업종 탭을 참조하십시오.
권장 인앱 이벤트 구조
다음의 인앱 이벤트는 AFInAppEventType 인터페이스의 일부분으로 정의되며 사용을 권장합니다.
레벨 달성
이벤트 이름: af_level_achieved
설명: 게임 레벨 이벤트 기록에 사용
이벤트 파라미터(안드로이드): AFInAppEventType.LEVEL_ACHIEVED
이벤트 파라미터(iOS): AFEventLevelAchieved
페이스북 매핑 이벤트: fb_mobile_level_achieved
트위터 매핑 이벤트: LEVEL_ACHIEVED
크리테오 매핑 이벤트: userLevel
구글 애즈: level_up
스냅챗: LEVEL_COMPLETE
권장 속성: af_level, af_score
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅챗 |
---|---|---|---|---|---|
af_level | fb_level | level | ui_level | level_up | level |
af_score | - | - | - | score | - |
결제 정보 추가
이벤트 이름: af_add_payment_info
설명: 결제 정보 설정 상태 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.ADD_PAYMENT_INFO
이벤트 파라미터(iOS): AFEventAddPaymentInfo
페이스북 매핑 이벤트: fb_mobile_add_payment_info
트위터 매핑 이벤트: ADDED_PAYMENT_INFO
크리테오 매핑 이벤트: 없음
구글 애즈: add_payment_info
스냅챗: ADD_BILLING
권장 속성: af_success
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅챗 |
---|---|---|---|---|---|
af_success | fb_success | user_payment_info | - | add_payment_info | success |
장바구니 추가
이벤트 이름: af_add_to_cart
설명: 특정 아이템의 장바구니 추가 이벤트 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.ADD_TO_CART
이벤트 파라미터 (iOS): AFEventAddToCart
페이스북 매핑 이벤트: fb_mobile_add_to_cart
트위터 매핑 이벤트: ADD_TO_CART
크리테오 매핑 이벤트: viewBasket
구글 애즈: add_to_cart
스냅챗: ADD_CART
권장 속성: af_price, af_content_type, af_content_id, af_content, af_currency, af_quantity
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅 |
---|---|---|---|---|---|
af_price | _valueToSum | price_micro* | price** | price | price |
af_content_type | fb_content_type | content_type | - | item_category | item_category |
af_content_id | fb_content_id | content_id | id | item_id | item_ids |
af_content | fb_content | - | - | - | - |
af_currency | fb_currency | price_currency | currency | currency_code | currency |
af_quantity | - | number_items | quantity | quantity | number_items |
* 여러 항목이 포함된 이벤트를 보고하려면 여기를 클릭하십시오.
위시리스트 추가
이벤트 이름: af_add_to_wishlist
설명: 특정 아이템의 위시리스트 추가 이벤트 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.ADD_TO_WISH_LIST
이벤트 파라미터 (iOS): AFEventAddToWishlist
페이스북 매핑 이벤트: fb_mobile_add_to_wishlist
트위터 매핑 이벤트: ADD_TO_WISHLIST
크리테오 매핑 이벤트: 없음
구글 애즈: add_to_wishlist
스냅챗: ADD_TO_WISHLIST
권장 속성: af_price, af_content_type, af_content_id, af_content, af_currency, af_quantity
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅챗 |
---|---|---|---|---|---|
af_price | _valueToSum | price_micro* | - | Price | price |
af_content_type | fb_content_type | content_type | - | item category | item_category |
af_content_id | fb_content_id | content_id | - | item_id | item_ids |
af_content | fb_content | - | - | - | - |
af_currency | fb_currency | price_currency | - | currency_code | currency |
af_quantity | - | number_items | - | quantity | number_items |
* 여러 항목이 포함된 이벤트를 보고하려면 여기를 클릭하십시오.
등록 완료
이벤트 이름: af_complete_registration
설명: 사용자 등록 방법 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.COMPLETE_REGISTRATION
이벤트 파라미터 (iOS): AFEventCompleteRegistration
페이스북 매핑 이벤트: fb_mobile_complete_registration
트위터 매핑 이벤트: SIGN_UP
크리테오 매핑 이벤트: 없음
구글 애즈: sign_up
스냅챗: SIGN_UP
권장 속성: af_registration_method
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅챗 |
---|---|---|---|---|---|
af_registration_ method |
fb_registration_ method |
registration_method | - | registration_method | sign_up_method |
튜토리얼 완료
이벤트 이름: af_tutorial_completion
설명: 튜토리얼 완료 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.TUTORIAL_COMPLETION
이벤트 파라미터 (iOS): AFEventTutorial_completion
페이스북 매핑 이벤트: fb_mobile_tutorial_completion
트위터 매핑 이벤트: TUTORIAL_COMPLETE
크리테오 매핑 이벤트: 없음
구글 애즈: tutorial_complete
스냅챗: COMPLETE_TUTORIAL
권장 속성: af_success, af_content_id, af_content
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅챗 |
---|---|---|---|---|---|
af_success | fb_success | - | - | success | success |
af_content_id | fb_content_id | content_id | - | item_id | item_ids |
af_content | fb_content | - | - | - | - |
* 여러 항목이 포함된 이벤트를 보고하려면 여기를 클릭하십시오.
결제
이벤트 이름: af_initiated_checkout
설명: 결제 이벤트 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.INITIATED_CHECKOUT
이벤트 파라미터(iOS): AFEventInitiatedCheckout
페이스북 매핑 이벤트: fb_mobile_initiated_checkout
트위터 매핑 이벤트: CHECKOUT_INITIATED
크리테오 매핑 이벤트: viewBasket
구글 애즈: begin_checkout
스냅챗: START_CHECKOUT
권장 속성: af_price, af_content_type, af_content_id, af_content, af_quantity, af_payment_info_available, af_currency
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅챗 |
---|---|---|---|---|---|
af_price | _valueToSum | price_micro* | price | price | price |
af_content_type | fb_content_type | content_type | - | item_category | item_category |
af_content_id | fb_content_id | content_id | id | item_id | item_ids |
af_content | fb_content | - | - | - | |
af_currency | fb_currency | price_currency | currency | currency_code | currency |
af_quantity | fb_num_items | number_items | quantity | quantity | number_items |
af_payment_info_ |
fb_payment_info_ available |
user_payment_ info |
- | payment_info_ available |
payment_info_available |
af_content_list | fb_content_id | - | - | item_id | - |
af_date_a- | fb_checkin_date | - | din | start_date | - |
af_date_b | fb_checkout_date | - | dout | end_date | - |
af_departing_ departure_date |
fb_departing_ departure_date |
- | - | - | - |
af_returning_ departure_date |
fb_returning_ departure_date |
- | - | - | - |
af_destination_a | fb_origin_airport | - | - | origin | - |
af_destination_b | fb_destination_airport | - | - | destination | - |
af_destination_list | fb_destination_ids | - | - | - | - |
af_city | fb_city | - | - | - | - |
af_region | fb_region | - | - | - | - |
af_country | fb_country | - | - | - | - |
af_departing_ arrival_date |
fb_departing_arrival_ date |
- | - | - | - |
af_returning_- arrival_date |
fb_returning_arrival_ date |
- | - | - | - |
af_suggested_ destinations |
fb_suggested_ destinations |
- | - | - | - |
af_travel_start | fb_travel_start | - | - | - | - |
af_travel_end | fb_travel_end | - | - | - | - |
af_num_adults | fb_num_adults | - | - | - | - |
af_num_childr-en | fb_num_children | - | - | - | - |
af_num_infant-s | fb_num_infants | - | - | - | - |
af_class | fb_travel_class | - | - | travel_class | - |
af_suggested_hotels | fb_suggested_hotels | - | - | - | - |
af_user_score | fb_user_score | - | - | - | - |
af_hotel_score | fb_hotel_score | - | - | - | - |
af_price | fb_purchase_value | - | - | price | - |
af_purchase_currency | fb_purchase_currency | - | - | - | - |
af_preferred_star_ ratings |
fb_preferred_star_ ratings |
- | - | - | - |
af_preferred_price_ range |
fb_preferred_price_ range |
- | - | - | - |
af_preferred_ neighborhoods |
fb_preferred_ neighborhoods |
- | - | - | - |
af_preferred_-num_ stops |
fb_preferred_num_ stops |
- | - | - | - |
* 여러 항목이 포함된 이벤트를 보고하려면 여기를 클릭하십시오.
구매
이벤트 이름: af_purchase
설명: 구매 이벤트(및 관련 수익) 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.PURCHASE
이벤트 파라미터 (iOS): AFEventPurchase
페이스북 매핑 이벤트: fb_mobile_purchase
트위터 매핑 이벤트: PURCHASE
크리테오 매핑 이벤트: transactionConfirmation
구글 애즈: in_app_purchase
스냅챗: PURCHASE
권장 속성: af_revenue, af_content_type, af_content_id, af_content, af_price, af_quantity, af_currency, af_order_id
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅챗 | 파트너 |
---|---|---|---|---|---|---|
af_revenue* |
_valueToSum |
price_micro** |
ui_revenue |
value |
price |
- |
af_content_type |
fb_content_type |
content_type |
- |
item_category |
item_category |
카테고리 |
af_content_id |
fb_content_id |
content_id |
id |
item_id |
item_ids |
- |
af_content |
fb_content |
- |
- |
- |
- |
사용자 정의 컨버전 메타 |
af_currency |
fb_currency |
price_currency |
currency |
currency_code |
currency |
통화 |
af_quantity |
fb_num_items |
number_items |
quantity |
quantity |
number_items |
quantity |
af_validated |
- |
- |
- |
VALIDATED |
success |
바우처 |
af_receipt_id |
- |
- |
transaction_id |
transaction_id |
- |
컨버전 참조 |
af_order_id |
fb_order_id |
- |
- |
order_id |
transaction_id |
Clickref |
af_content_list |
fb_content_id |
- |
- |
item_id |
- |
사용자 정의 항목 메타 |
af_date_a |
fb_checkin_date |
- | din | start_date | - | - |
af_date_b |
fb_checkout_date |
- | dout | end_date | - | - |
af_departing_ departure_date |
fb_departing_ |
- | - | - | - | - |
af_returning_ departure_date |
fb_returning_ |
- | - | - | - | - |
af_destination_a |
fb_origin_airport |
- | - | origin | - | - |
af_destination_b |
fb_destination_ |
- | - | destination | - | - |
af_destination_list |
fb_destination_ids |
- | - | - | - | - |
af_city |
fb_city |
- | - | - | - | - |
af_region |
fb_region |
-- | -- | -- | -- | - |
af_country |
fb_country |
- | - | - | - | - |
af_departing_arrival_ date |
fb_departing_arrival_ |
- | - | - | - | - |
af_returning_arrival_ date |
fb_returning_arrival_ |
- | - | - | - | - |
af_suggested_ destinations |
fb_suggested_ |
- | - | - | - | - |
af_travel_start |
fb_travel_start |
- | - | - | - | - |
af_travel_end |
fb_travel_end |
- | - | - | - | - |
af_num_adults |
fb_num_adults |
- | - | - | - | - |
af_num_children |
fb_num_children |
- | - | - | - | - |
af_num_infants |
fb_num_infants |
- | - | - | - | - |
af_class |
fb_travel_class |
- | - | travel_class | - | - |
af_suggested_ hotels |
fb_suggested_ |
- | - | - | - | - |
af_user_score |
fb_user_score |
- | - | - | - | - |
af_hotel_score |
fb_hotel_score |
- | - | - | - | - |
af_price |
fb_purchase_value |
- | price** | price | - | value |
af_purchase_ currency |
fb_purchase_ |
- | - | - | - | - |
af_preferred_star_ ratings |
fb_preferred_star_ |
- | - | - | - | - |
af_preferred_price_ range |
fb_preferred_price_ |
- | - | - | - | - |
af_preferred_ neighborhoods |
fb_preferred_ |
- | - | - | - | - |
af_preferred_num_ stops |
fb_preferred_num_ |
- | - | - | - | - |
* af_revenue는 앱스플라이어 플랫폼에서 수익으로 계산합니다.
**af_price - 수익으로 집계되지 않는 수익화 파라미터로 af_price를 사용할 수 있습니다(“장바구니 추가” 이벤트에서와 동일). 이 파라미터는 개별 아이템 가격을 나타냅니다. 총 구매 금액은 af_revenue 파라미터에 표시됩니다.
앱스플라이어가 지원하는 통화 기호 목록은 여기를 클릭해서 확인하세요.
* 여러 항목이 포함된 이벤트를 보고하려면 여기를 클릭하십시오.
구독
이벤트 이름: af_subscribe
설명: 유료 구독 구매 기록에 사용
이벤트 파라미터(Android): AFInAppEventType.SUBSCRIBE
이벤트 파라미터 (iOS): AFEventSubscribe
페이스북 매핑 이벤트: Subscribe
트위터 매핑 이벤트: 없음
크리테오 매핑 이벤트: 없음
구글 애즈: 없음
스냅챗: SUBSCRIBE
권장 속성: af_revenue af, af_currency
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅챗 |
---|---|---|---|---|---|
af_revenue |
_valueToSum |
- |
- |
- |
price |
af_currency |
fb_currency |
- |
- |
- |
currency |
무료 체험 시작
이벤트 이름: af_start_trial
설명: 제품 무료 체험 시작 기록에 사용
이벤트 파라미터(Android): AFInAppEventType.START_TRIAL
이벤트 파라미터 (iOS): AFEventStartTrial
페이스북 매핑 이벤트: StartTrial
트위터 매핑 이벤트: 없음
크리테오 매핑 이벤트: 없음
구글 애즈: 없음
스냅챗: START_TRIAL
권장 속성: af_price, af_currency
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅챗 |
---|---|---|---|---|---|
af_price |
_valueToSum |
- |
- |
- |
price |
af_currency |
fb_currency |
- |
- |
- |
currency |
평점
이벤트 이름: af_rate
설명: 앱/아이템 평점 이벤트 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.RATE
이벤트 파라미터 (iOS): AFEventRate
페이스북 매핑 이벤트: fb_mobile_rate
트위터 매핑 이벤트: RATED
크리테오 매핑 이벤트: 없음
구글 애즈: submit_rating
스냅챗: RATE
권장 속성: af_rating_value, af_content_type, af_content_id, af_content, af_max_rating_value
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅챗 |
---|---|---|---|---|---|
af_rating_value |
_valueToSum |
price_micro |
- |
value |
- |
af_content_type |
fb_content_type |
content_type |
- |
content_type |
item_category |
af_content_id |
fb_content_id |
content_id |
- |
content_id |
item_ids |
af_content |
fb_content |
- |
- |
- |
- |
af_max_rating_value |
fb_max_rating_value |
max_rated_value |
- |
max_rating |
- |
* 여러 항목이 포함된 이벤트를 보고하려면 여기를 클릭하십시오.
검색
이벤트 이름: af_search
설명: 검색 이벤트 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.SEARCH
이벤트 파라미터 (iOS): AFEventSearch
페이스북 매핑 이벤트: fb_mobile_search
트위터 매핑 이벤트: SEARCH
크리테오 매핑 이벤트: viewSearch
구글 애즈: view_search_results
구글 애즈: SEARCH
권장 속성: af_content_type, af_search_string, af_success
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅챗 |
---|---|---|---|---|---|
af_content_type |
fb_content_type |
content_type |
- |
item_category |
item_category |
af_search_string |
fb_search_string |
search_string |
- |
search_term |
search_string |
af_date_a |
fb_checkin_date |
- |
din |
start_date |
- |
af_date_b |
fb_checkout_date |
- |
dout |
end_date |
- |
af_destination_a |
fb_origin_airport |
- |
- |
origin |
- |
af_destination_b |
fb_destination_airport |
- |
- |
destination |
- |
af_success |
fb_success |
- |
- |
success |
success |
af_content_list |
fb_content_id |
- |
- |
item_id |
- |
af_departing_ departure_date |
fb_departing_ |
- | - | - | - |
af_returning_ departure_date |
fb_returning_ |
- | - | - | - |
af_destination_list |
fb_destination_ids |
- | - | - | - |
af_city |
fb_city |
- | - | - | - |
af_region |
fb_region |
- | - | - | - |
af_country |
fb_country |
- | - | - | - |
af_departing_arrival_ date |
fb_departing_arrival_ |
- | - | - | - |
af_returning_arrival_ date |
fb_returning_arrival_ |
- | - | - | - |
af_suggested_ destinations |
fb_suggested_ |
- | - | - | - |
af_travel_start |
fb_travel_start |
- | - | - | - |
af_travel_end- |
fb_travel_end |
- | - | - | - |
af_num_adults |
fb_num_adults |
- | - | - | - |
af_num_children |
fb_num_children |
- | - | - | - |
af_num_infants |
fb_num_infants |
- | - | - | - |
af_class |
fb_travel_class |
- | - | travel_class | - |
af_suggested_hotels |
fb_suggested_hotels |
- | - | - | - |
af_user_score |
fb_user_score |
- | - | - | - |
af_hotel_score |
fb_hotel_score |
- | - | - | - |
af_price |
fb_purchase_value |
- | - | price | - |
af_purchase_currency |
fb_purchase_currency |
- | - | - | - |
af_preferred_star_ ratings |
fb_preferred_star_ |
- | - | - | - |
af_preferred_price_ range |
fb_preferred_price_ |
- | - | - | - |
af_preferred_ neighborhoods |
fb_preferred_ |
- | - | - | - |
af_preferred_num_ stops |
fb_preferred_num_ |
- | - | - | - |
크레딧 사용
이벤트 이름: af_spent_credits
설명: 크레딧 사용 이벤트 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.SPENT_CREDIT
이벤트 파라미터 (iOS): AFEventSpentCredits
페이스북 매핑 이벤트: fb_mobile_spent_credits
트위터 매핑 이벤트: SPENT_CREDITS
크리테오 매핑 이벤트: transactionConfirmation
구글 애즈: spend_virtual_currency
스냅챗: SPENT_CREDITS
권장 속성: af_price, af_content_type, af_content_id, af_content
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅챗 |
---|---|---|---|---|---|
af_price |
_valueToSum |
price_micro* |
price** |
price |
price |
af_content_type |
fb_content_type |
content_type |
- |
item_category |
item_category |
af_content_id |
fb_content_id |
content_id |
item_id |
item_id |
item_ids |
af_content |
fb_content |
- |
- |
|
- |
* 여러 항목이 포함된 이벤트를 보고하려면 여기를 클릭하십시오.
도전 과제 완료
이벤트 이름: af_achievement_unlocked
설명: 도전 과제 잠금 해제 이벤트 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.ACHIEVEMENT_UNLOCKED
이벤트 파라미터 (iOS): AFEventAchievementUnlocked
페이스북 매핑 이벤트: fb_mobile_achievement_unlocked
트위터 매핑 이벤트: ACHIEVEMENT_UNLOCKED
크리테오 매핑 이벤트: achievement
구글 애즈: unlock_achievement
스냅챗: ACHIEVEMENT_UNLOCKED
권장 속성: af_description
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅챗 |
---|---|---|---|---|---|
af_description |
fb_description |
description |
ui_achievement |
description |
description |
콘텐츠 보기
이벤트: af_content_view
설명: 콘텐츠 보기 이벤트 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.CONTENT_VIEW
이벤트 파라미터 (iOS): AFEventContentView
페이스북 매핑 이벤트: fb_mobile_content_view
트위터 매핑 이벤트: CONTENT_VIEW
크리테오 매핑 이벤트: viewProduct
구글 애즈: view_item
스냅챗: VIEW_CONTENT
권장 속성: af_price, af_content_type, af_content_id, af_content, af_currency
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅 |
---|---|---|---|---|---|
af_price |
_valueToSum |
price_micro* |
price |
price |
price |
af_content_type |
fb_content_type |
content_type |
- |
item_category |
item_category |
af_content_id |
fb_content_id |
content_id |
id |
item_id |
item_ids |
af_content |
fb_content |
- |
- |
- |
- |
af_currency |
fb_currency |
price_currency |
currency |
currency_code |
currency |
af_content_list |
fb_content_id |
- |
- |
item_id | - |
af_date_a |
fb_checkin_date |
- | din | start_date | - |
af_date_b |
fb_checkout_date |
- | dout | end_date | - |
af_departing_ departure_date |
fb_departing_ |
- | - | - | |
af_returning_ departure_date |
fb_returning_ |
- | - | - | - |
af_destination_a |
fb_origin_airport |
- | - | origin | - |
af_destination_b |
fb_destination_ |
- | - | destination | - |
af_destination_list |
fb_destination_ids |
- | - | - | - |
af_city |
fb_city |
- | - | - | - |
af_region |
fb_region |
- | - | - | - |
af_country |
fb_country |
- | - | - | - |
af_departing_arrival_ date |
fb_departing_arrival_ |
- | - | - | - |
af_returning_arrival_ date |
fb_returning_arrival_ |
- | - | - | - |
af_suggested_ destinations |
fb_suggested_ |
- | - | - | - |
af_travel_start |
fb_travel_start |
- | - | - | - |
af_travel_end |
fb_travel_end |
- | - | - | - |
af_num_adults |
fb_num_adults |
- | - | - | - |
af_num_children |
fb_num_children |
- | - | - | - |
af_num_infants |
fb_num_infants |
- | - | - | - |
af_class |
fb_travel_class |
- | - | travel_class | - |
af_suggested_hotels |
fb_suggested_hotels |
- | - | - | - |
af_user_score |
fb_user_score |
- | - | - | - |
af_hotel_score |
fb_hotel_score |
- | - | - | - |
af_price |
fb_purchase_value |
- | - | price | - |
af_purchase_currency |
fb_purchase_currency |
- | - | - | - |
af_preferred_star_ ratings |
fb_preferred_star_ |
- | - | - | - |
af_preferred_price_ range |
fb_preferred_price_ |
- | - | - | - |
af_preferred_ neighborhoods |
fb_preferred_ |
- | - | - | - |
af_preferred_num_ stops |
fb_preferred_num_ |
- | - | - | - |
목록 보기
이벤트 이름: af_list_view
설명: 목록 보기 이벤트 기록에 사용
이벤트 파라미터 (안드로이드): "af_list_view" 문자열을 대신 사용
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "af_list_view", eventValue);
이벤트 파라미터 (iOS): AFEventListView
페이스북 매핑 이벤트:
트위터 매핑 이벤트:
크리테오 매핑 이벤트: viewListing
구글 애즈: view_item_list
스냅챗: LIST_VIEW
권장 속성: af_content_type, af_content_list
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅챗 |
---|---|---|---|---|---|
af_content_type |
- |
- |
- |
item_Category |
item_category |
af_content_list |
- |
- |
- |
item_id |
- |
광고 클릭
이벤트 이름: af_ad_click
설명: 앱 내 광고 클릭 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.AD_CLICK
이벤트 파라미터 (iOS): AFEventAdClick
페이스북 매핑 이벤트: AdClick
트위터 매핑 이벤트: 없음
크리테오 매핑 이벤트: 없음
구글 애즈: 없음
스냅챗: AD_CLICK
권장 속성: af_adrev_ad_type
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅챗 |
---|---|---|---|---|---|
af_adrev_ad_type |
ad_type |
- |
- |
- |
- |
af_currency |
fb_currency |
- |
- |
- |
currency |
광고 보기
이벤트 이름: af_ad_view
설명: 앱 내 광고 열람 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.AD_VIEW
이벤트 파라미터 (iOS): AFEventAdView
페이스북 매핑 이벤트: AdImpression
트위터 매핑 이벤트: 없음
크리테오 매핑 이벤트: 없음
구글 애즈: 없음
스냅챗: AD_VIEW
권장 속성: af_adrev_ad_type
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅챗 |
---|---|---|---|---|---|
af_adrev_ad_type |
ad_type |
- |
- |
- |
- |
af_currency |
fb_currency |
- |
- |
- |
currency |
여행 예약
이벤트 이름: af_travel_booking
설명: 여행 예약 이벤트 및 관련 수익 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.TRAVEL_BOOKING
이벤트 파라미터 (iOS): AFEventTravelBooking
페이스북 매핑 이벤트: fb_mobile_purchase
트위터 매핑 이벤트: PURCHASE
크리테오 매핑 이벤트: transactionConfirmation
구글 애즈: ecommerce_purchase
스냅챗: RESERVE
권장 속성: af_revenue, af_destination_a, af_destination_b, af_class, af_description, af_customer_user_id, af_content_type, af_content_id, af_date_a, af_date_b
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅챗 |
---|---|---|---|---|---|
af_revenue* |
_valueToSum |
price_micro** |
price*** |
value |
price |
af_customer_user_id |
- |
- |
cid |
customer_user_ |
- |
af_content_type |
fb_content_type |
content_type |
- |
item_category |
item_category |
af_content_id |
fb_content_id |
content_id |
- |
item_id |
item_ids |
af_class |
- |
- |
- |
travel_class |
- |
af_date_a |
- |
- |
din |
start_date |
- |
af_date_b |
- |
- |
dout |
end_date |
- |
af_destination_a |
- |
- |
- |
origin |
- |
af_destination_b |
- |
- |
- |
destination |
- |
af_success |
fb_success |
- |
- |
success |
|
af_content_list |
fb_content_ids |
- |
- |
item_id | - |
af_date_a |
fb_checkin_date |
- | - | start_date | - |
af_date_b |
fb_checkout_date |
- | - | end_date | - |
af_departing_ departure_date |
fb_departing_ |
- | - | - | |
af_returning_ departure_date |
fb_returning_ |
- | - | - | |
af_destination_a |
fb_origin_airport |
- | - | origin | - |
af_destination_b |
fb_destination_airport |
- | - | destination | - |
af_destination_list |
fb_destination_ids |
- | - | - | |
af_city |
fb_city |
- | - | - | - |
af_region |
fb_region |
- | - | - | - |
af_country |
fb_country |
- | - | - | - |
af_departing_arrival_ date |
fb_departing_arrival_ |
- | - | - | - |
af_returning_arrival_ date |
fb_returning_arrival_ |
- | - | - | - |
af_suggested_ destinations |
fb_suggested_ |
- | - | - | - |
af_travel_start |
fb_travel_start |
- | - | - | - |
af_travel_end |
fb_travel_end |
- | - | - | - |
af_num_adults |
fb_num_adults |
- | - | - | - |
af_num_children |
fb_num_children |
- | - | - | - |
af_num_infants |
fb_num_infants |
- | - | - | - |
af_class |
fb_travel_class |
- | - | travel_class | - |
af_suggested_hotels |
fb_suggested_hotels |
- | - | - | - |
af_user_score |
fb_user_score |
- | - | - | - |
af_hotel_score |
fb_hotel_score |
- | - | - | - |
af_price |
fb_purchase_value |
- | - | price | - |
af_purchase_currency |
fb_purchase_currency |
- | - | - | - |
af_preferred_star_ ratings- |
fb_preferred_star_ |
- | - | - | - |
af_preferred_price_ range |
fb_preferred_star_ |
- | - | - | - |
af_preferred_ neighborhoods |
fb_preferred_ |
- | - | - | - |
af_preferred_num_ stops- |
fb_preferred_num_ |
- | - | - | - |
af_order_id |
fb_order_id |
- | - | order_id | transaction_id |
공유
이벤트 이름: af_share
설명: 공유 이벤트 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.SHARE
이벤트 파라미터 (iOS): AFEventShare
페이스북 매핑 이벤트: 없음
트위터 매핑 이벤트: SHARE
크리테오 매핑 이벤트: 없음
구글 애즈: share
스냅챗: SHARE
권장 속성: af_description
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅챗 |
---|---|---|---|---|---|
af_description |
- |
description |
- |
description |
description |
초대
이벤트 이름: af_invite
설명: 초대 (소셜) 이벤트 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.INVITE
이벤트 파라미터 (iOS): AFEventInvite
페이스북 매핑 이벤트: 없음
트위터 매핑 이벤트: INVITE
크리테오 매핑 이벤트: 없음
구글 애즈: invite
스냅챗: INVITE
권장 속성: 없음
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 | 스냅챗 |
---|---|---|---|---|---|
af_description |
- |
description |
- |
description |
description |
로그인
이벤트 이름: af_login
설명: 로그인 이벤트 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.LOGIN
이벤트 파라미터 (iOS): AFEventLogin
페이스북 매핑 이벤트: 없음
트위터 매핑 이벤트: LOGIN
크리테오 매핑 이벤트: 없음
구글 애즈: login
권장 속성: 없음
리인게이지먼트
이벤트 이름: af_re_engage
설명: 리인게이지먼트 이벤트 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.RE_ENGAGE
이벤트 파라미터 (iOS): AFEventReEngage
페이스북 매핑 이벤트: 없음
트위터 매핑 이벤트: RE_ENGAGE
크리테오 매핑 이벤트: 없음
구글 애즈: custom_event
권장 속성: 없음
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 |
---|---|---|---|---|
af_description |
- |
description |
- |
description |
푸쉬 알림 열기
이벤트 이름: af_opened_from_push_notification
설명: 푸시 알림 이벤트를 통한 앱 오픈 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.OPENED_FROM_PUSH_NOTIFICATION
이벤트 파라미터 (iOS): AFEventOpenedFromPushNotification
페이스북 매핑 이벤트: 없음
트위터 매핑 이벤트: 없음
크리테오 매핑 이벤트: 없음
구글 애즈: notification_open
권장 속성: 없음
업데이트
이벤트 이름: af_update
설명: 업데이트 이벤트 기록에 사용
이벤트 파라미터 (안드로이드): AFInAppEventType.UPDATE
이벤트 파라미터 (iOS): AFEventUpdate
페이스북 매핑 이벤트: 없음
트위터 매핑 이벤트: UPDATE
크리테오 매핑 이벤트: 없음
구글 애즈: app_update
권장 속성: af_content_id
속성 매핑:
앱스플라이어 | 페이스북 | 트위터 | 크리테오 | 구글 애즈 |
---|---|---|---|---|
af_content_id |
- |
content_id |
- |
item_id |
* 여러 항목이 포함된 이벤트를 보고하려면 여기를 클릭하십시오.
위에서 설명한, 다양한 네트워크의 사전 정의된 이벤트에 매핑될 수있는 이벤트 외에도, 페이스북은 어트리뷰트 없이 전송되는 추가 이벤트를 제공합니다.
옵션 파라미터
각 이벤트와 함께 전달된 권장 파라미터 이외에, 아래 파라미터를 AFInAppEventParameterName
인터페이스의 일부분으로 정의한 후 이벤트 딕셔너리 값의 일부분으로 전송할 수 있습니다.
Parameter String Constant | Parameter String Name | Recommended Value Type |
---|---|---|
REVENUE (details) |
af_revenue |
Float |
PRICE (details) |
af_price |
Float |
LEVEL |
af_level |
Int |
SUCCESS |
af_success |
Boolean |
CONTENT_TYPE |
af_content_type |
String |
CONTENT_LIST |
af_content_list |
Array of strings |
CONTENT_ID |
af_content_id |
String |
CURRENCY |
af_currency |
String |
REGISTRATION_METHOD |
af_registration_method |
String |
QUANTITY |
af_quantity |
Int |
PAYMENT_INFO_AVAILABLE |
af_payment_info_available |
Boolean |
RATING_VALUE |
af_rating_value |
Float |
MAX_RATING_VALUE |
af_max_rating_value |
Float |
SEARCH_STRING |
af_search_string |
String |
DESCRIPTION |
af_description |
String |
SCORE |
af_score |
Int |
DESTINATION_A |
af_destination_a |
String |
DESTINATION_B |
af_destination_b |
String |
CLASS |
af_class |
String |
DATE_A |
af_date_a |
String |
DATE_B |
af_date_b |
String |
EVENT_START |
af_event_start |
Unixtime |
EVENT_END |
af_event_end |
Unixtime |
LATITUDE |
af_lat |
Int |
LONGITUDE |
af_long |
Int |
CUSTOMER_USER_ID |
af_customer_user_id |
String |
CUSTOMER_SEGMENT |
af_customer_segment |
String |
VALIDATED |
af_validated |
String |
RECEIPT_ID |
af_receipt_id |
String |
ORDER_ID |
af_order_id |
String |
TUTORIAL_ID |
af_tutorial_id |
String |
ACHIEVEMENT_ID |
af_achievement_id |
String |
VIRTUAL_CURRENCY_NAME |
af_virtual_currency_name |
String |
DEEP_LINK |
af_deep_link |
String |
OLD_VERSION |
af_old_version |
String |
NEW_VERSION |
af_new_version |
String |
REVIEW_TEXT |
af_review_text |
String |
COUPON_CODE |
af_coupon_code |
String |
DEPARTING_DEPARTURE_DATE |
af_departing_departure_date |
String |
RETURNING_DEPARTURE_DATE |
af_returning_departure_date |
String |
DESTINATION_LIST |
af_destination_list |
String[] |
CITY |
af_city |
String |
REGION |
af_region |
String |
COUNTRY |
af_county |
String |
DEPARTING_ARRIVAL_DATE |
af_departing_arrival_date |
String |
RETURNING_ARRIVAL_DATE |
af_returning_arrival_date |
String |
SUGGESTED_DESTINATIONS |
af_suggested_destinations |
String[] |
TRAVEL_START |
af_travel_start |
String |
TRAVEL_END |
af_travel_end |
String |
NUM_ADULTS |
af_num_adults |
Int |
NUM_CHILDREN |
af_num_children |
Int |
NUM_INFANTS |
af_num_infants |
Int |
SUGGESTED_HOTELS |
af_suggested_hotels |
String[] |
USER_SCORE |
af_user_score |
Float |
HOTEL_SCORE |
af_hotel_score |
Float |
PURCHASE_CURRENCY |
af_purchase_currency |
String |
PREFERRED_STAR_RATINGS |
af_preferred_star_ratings |
Int[2] |
PREFERRED_PRICE_RANGE |
af_preferred_price_range |
Int[2] |
PREFERRED_NEIGHBORHOODS |
af_preferred_neighborhoods |
String[] |
PREFERRED_NUM_STOPS |
af_preferred_num_stops |
Int |
CONTENT |
af_content |
String |
PARAM_1 |
af_param_1 |
String |
PARAM_2 |
af_param_2 |
String |
PARAM_3 |
af_param_3 |
String |
PARAM_4 |
af_param_4 |
String |
PARAM_5 |
af_param_5 |
String |
PARAM_6 |
af_param_6 |
String |
PARAM_7 |
af_param_7 |
String |
PARAM_8 |
af_param_8 |
String |
PARAM_9 |
af_param_9 |
String |
PARAM_10 |
af_param_10 |
String |
수익 파라미터
수익 값은 어떠한 파라미터와 이벤트로도 전송할 수 있습니다. 하지만, 앱스플라이어 로데이터나 통합 데이터에서 수익으로 표시하려면 af_revenue 파라미터를 사용해야만 합니다. 항상 비즈니스 로직 상에서 실제 수익 창출을 나타내는 인앱 이벤트와 함께 사용하십시오.
af_revenue 파라미터에 대한 더 자세한 내용은 수익 어트리뷰션 가이드에서 확인하십시오.
개인 식별 정보(Personally Identifiable Information)
개인 식별 정보 (PII)는 단독으로나, 다른 정보(생일, 출생지와 연관된 데이터)와 결합하여 개인을 식별하거나 특정지을 수 있는 정보입니다. (이름, 국가 식별 번호, 주민 등록 번호)
앱스플라이어는 사용자 개인 정보 보호 규정을 준수하며 사용자 개인 식별 정보를 수집하지 않습니다.
이벤트 값(event value)으로 개인 식별 정보를 전송하지 마십시오.
참고
앱스플라이어는 사용자 인게이지먼트중에 기기의 IP 주소를 수집합니다. 일부 지역 또는 사용 시나리오에서, IP 주소는 개인 식별 정보로 간주될 수도 있습니다. 앱스플라이어는 IP 주소를 통해 광범위한 지리적 위치 (도시, 구 수준)를 도출하지만 특정 주소는 아닙니다. 필요한 경우 IP 주소를 마스킹하도록 설정하여 로데이터 보고서에 나타나지 않도록 할 수 있습니다.
복수의 아이템
한 건의 거래에 복수의 아이템을 추가할 수 있습니다. 이벤트 파라미터당 하나의 값을 사용하는 대신, 쉼표로 구분하여 거래를 설명하는 항목 배열(array)로 처리할 수 있습니다.
예
A. Flyer씨는 미국 온라인 상점에서 같은 셔츠 두 장과 구두 한 켤레 그리고 모자 하나를 한 건의 동일한 거래로 구매합니다. 나열된 각 아이템의 순서는 각 파라미터 값의 순서와 일치해야 합니다.
af_content_id: ["123","988","399"]
af_quantity: [2,1,1]
af_price: [25,50,10]
af_revenue: [110]
af_currency: USD
복수의 아이템은 다음과 같이 코드로 나타낼 수 있습니다.
Map<String,Object> eventData = new HashMap<>();
eventData.put(AFInAppEventParameterName.CONTENT_ID, new String[] {"123","988","399"});
eventData.put(AFInAppEventParameterName.QUANTITY, new int[] {2, 1, 1});
eventData.put(AFInAppEventParameterName.PRICE,new int[] {25, 50, 10});
eventData.put(AFInAppEventParameterName.CURRENCY,"USD");
eventData.put(AFInAppEventParameterName.REVENUE,110);
AppsFlyerLib.getInstance().logEvent(AppsFlyerTestActivity.this, AFInAppEventType.PURCHASE,eventData);
복수의 아이템은 포스트백에서 배열(array)로 전송됩니다. 현재 페이스북과 트위터는 배열 파라미터를 정확하게 분석할 수 없습니다. 이를 해결하기 위해서 앱스플라이어는 배열로 전송하는 대신 아이템의 개수 (af_quantity)를 합산합니다. (예: 위의 예제에서 페이스북은 af_quantity=4를 수신합니다.
참고
복수의 아이템은 다음 인앱 이벤트와 함께 사용할 수 있습니다.
af_add_to_cart, af_add_to_wishlist, af_tutorial_completion, af_initiated_checkout, af_purchase, af_rate, af_spent_credits, af_content_view, af_travel_booking, af_update
복합 인앱 이벤트
복합 인앱 이벤트(complex in-app events)를 사용하면, 단일 API 호출로 복수의 이벤트를 전송할 수 있습니다.
서로 밀접하게 연관된 사용자 행동을 그룹으로 묶어서 보려고 할 때 유용합니다. 예: 단일 세션에서 여러 개의 제품을 하나의 장바구니에 추가하기.
예:
{
"af_revenue":"50.87",
"af_currency":"USD",
"af_receipt_id":"57601333",
"product":[
{
"af_content_id":"1164_8186",
"af_price":"8.97",
"af_quantity":"1"
},
{
"af_content_id":"1164_8186",
"af_price":"8.97",
"af_quantity":"1"
},
{
"af_content_id":"1164_8186",
"af_price":"8.97",
"af_quantity":"1"
},
{
"af_content_id":"1177_8185",
"af_price":"8.97",
"af_quantity":"1"
},
{
"af_content_id":"0153_9077",
"af_price":"14.99",
"af_quantity":"1"
}
]
}
주의
복합 인앱 이벤트는 페이스북과 크리테오에서 포스트백 문제를 발생시킬 수 있습니다. 페이스북과 크리테오에 완벽하게 매핑되는 이벤트가 필요하면, 사용자 동작마다 이벤트를 나눠서 전송해야 합니다. 예: 추가 아이템마다 장바구니 추가 이벤트 전송 인앱 이벤트 로데이터를 사용하여 이 이벤트들을 그룹으로 함께 묶을 수 있습니다.
오프라인 이벤트 기록하기
- SDK가 앱스플라이어 서버에 이벤트를 보내고 응답을 기다립니다.
- 만약 SDK가 200 응답을 받지 못한다면, 이벤트가 캐시에 저장됩니다.
- 저장된 이벤트는 다음 200 응답을 받을 때 서버로 다시 전송됩니다.
- 캐시에 다수의 이벤트가 있는 경우에는 순서대로 하나씩 빠르게 서버로 전송됩니다.
참고
SDK의 캐시는 최대 40개의 이벤트를 저장할 수 있습니다. 따라서 오프라인 상태에서 발생한 첫 40개의 이벤트만 저장됩니다. 그 이후 다음 200 응답을 받을 때까지의 모든 이벤트는 저장되지 못하고 버려집니다.
로데이터에 표시된 이벤트 시간(event time)은 기기가 다시 온라인 상태가 된 후 앱스플라이어로 이벤트가 전송된 시간입니다. 그러므로 이벤트가 실제로 일어난 시간이 아닙니다.
이벤트 중복제거
앱스플라이어에는 인앱 이벤트 중복제거 메커니즘이 있습니다. 모든 인앱 이벤트에 대해서 10초 이내에 동일한 appsflyer_id로부터 같은 인앱 이벤트를 받았는지 여부를 확인합니다. 동일한 이벤트를 발견하면, 메커니즘에 따라 중복 이벤트를 제거합니다.
다음의 필드가 같은 경우에 두 이벤트는 동일한 것으로 판단합니다.
- 이벤트 이름
- 이벤트 값(event value)
- 앱 ID
- AppsFlyer ID
참고
중복제거는 SDK에서 전송된 인앱 이벤트에만 적용됩니다.
서버 간 전송된 S2S 인앱 이벤트는 중복제거를 할 수 없습니다.
이 항목에서는 몇몇 업종의 인앱 이벤트를 정리해두었습니다. 각 업종에 따라, 기록하는 것을 권장하는 인앱 이벤트를 선정하여 설명합니다.
인앱 이벤트 기록을 시작하려면 다음 단계에 따라 작업을 수행합니다.
- 업종을 선택합니다.
- 기록하려는 인앱 이벤트를 선택합니다. 해당 업종에 나열된 모든 이벤트를 기록하는 것을 권장합니다.
- 각 인앱 이벤트용 코드를 복사하고 적용할 앱에서 구현합니다.
만약 앱 크기와 업종에 따라 매핑된 이벤트 중 가장 인기있는 인앱 이벤트에 대해 찾으신다면 여기를 클릭하십시오.
게임
게임 앱은 아케이드, 전략, 교육용 게임 및 갬블링을 포함합니다. 게임 앱에서 권장하는 이벤트는 인앱 구매, 소셜 미디어 공유 및 친구 초대입니다. 게임에서의 레벨 달성 및 게임 튜토리얼 완료 이벤트도 추가할 수 있습니다. 이러한 이벤트 기록이 어떻게 도움이 되는지 아래 예를 참고하십시오.
- 인앱 구매 기록을 통해 어떤 조건을 제시하면 사용자가 가장 많이 구매하는지를 알 수 있습니다.
- 레벨 달성 기록을 통해 사용자의 참여 정도를 알 수 있습니다.
- 공유 및 초대 이벤트 기록을 통해 얼마나 많은 사용자가 공유를 하고 다른 사용자를 초대하는지, 어떤 소셜 미디어 플랫폼을 초대하는데 사용하는지도 알 수 있습니다.
팁
여기에서 언급한 이벤트는 다음 플랫폼에서 실행되는 게임 앱에도 해당됩니다.
- 안드로이드 스마트 TV
- 애플 TV (tvOS)
- 아마존 Fire TV
- Xbox
로그인
이벤트 이름: af_login
목적
이 이벤트를 사용하면 등록 사용자의 잔존율을 이해할 수 있습니다.
트리거 로직
사용자가 로그인할 때마다 이벤트를 트리거합니다.
권장 속성
이 이벤트는 추가 속성 없이 전송될 수 있습니다.
코드 예
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LOGIN, null);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventLogin withValues: nil];
AppsFlyerTracker.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.trackRichEvent ("af_login", null);
등록 완료
이벤트 이름: af_complete_registration
목적
사용자 등록을 기록하고, 다른 데이터와 비교하여 사용자에 대해 더 자세히 이해할 수 있습니다. 사용자 등록 이벤트 기록을 통해 다음을 할 수 있습니다.
- 앱을 설치했지만 가입하지 않은 사용자가 얼마나 되는지 알 수 있습니다.
- 사용자가 선호하는 가입 방법이 무엇인지 알 수 있습니다.
트리거 로직
이 이벤트를 기록하는 가장 좋은 방법은, 사용자가 가입 절차를 완료했을 때 이벤트를 트리거하는 것입니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_registration_method | string | 이메일, 페이스북 | 가입 방법 유형 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REGSITRATION_METHOD, "Facebook");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.COMPLETE_REGISTRATION, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventCompleteRegistration
withValues: @{
AFEventParamRegistrationMethod: @"Facebook"
}];
AppsFlyerTracker.shared().logEvent(AFEventCompleteRegistration,
withValues: [
AFEventParamRegistrationMethod: "Facebook"
]);
Dictionary<string, string> CompletedRegistrationEvent = new Dictionary<string, string>();
CompletedRegistrationEvent.Add("af_registration_method", "Facebook");
AppsFlyer.trackRichEvent ("af_complete_registration", CompletedRegistrationEvent);
구매
이벤트 이름: af_purchase
목적
많은 게임 앱에서 사용자는 아이템을 구매할 수 있습니다. 예를 들면 코인, 보석, 무기 등입니다. 구매 이벤트를 사용하여 사용자의 인앱 구매를 기록할 수 있습니다. 구매 기록을 통해 다음을 할 수 있습니다.
- 광고 네트워크와 광고 에이전시 전반에 대한 사용자의 LTV 및 캠페인의 ROI를 알 수 있습니다.
- 사용자에게 가장 인기있는 아이템이 무엇인지 알 수 있습니다.
- 캠페인 타게팅을 최적화하기 위해서, 구매한 아이템 내역을 기반으로 크로스 캠페인을 진행할 수 있습니다.
트리거 로직
이 이벤트를 제대로 기록하기 위해서는, 사용자가 구매를 성공적으로 마친 후 보여지는 구매 확인 페이지에서 이벤트를 트리거해야 합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_revenue | float | 2000 | 구매 추정 수익 |
af_currency | string | THB / USD | 통화 코드 |
af_quantity | int | 2 | 구매 아이템 개수 |
af_content_id | string | 001, 092 | 아이템 ID |
order_id | string | 9277 | 주문 ID |
af_receipt_id | string | 9277 | 영수증 ID |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REVENUE, 200);
eventValue.put(AFInAppEventParameterName.CURRENCY, "USD");
eventValue.put(AFInAppEventParameterName.QUANTITY, 2);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "092");
eventValue.put("order_id", "9277");
eventValue.put(AFInAppEventParameterName.RECEIPT_ID, "9277");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),AFInAppEventType.PURCHASE, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventPurchase
withValues: @{
AFEventParamRevenue: @200,
AFEventParamCurrency: @"USD",
AFEventParamQuantity: @2,
AFEventParamContentId: @"092",
@"order_id": @"9277",
AFEventParamReceiptId: @"9277"
}];
AppsFlyerTracker.shared().logEvent(AFEventPurchase,
withValues: [
AFEventParamRevenue: 200,
AFEventParamCurrency: "THB",
AFEventParamQuantity: 2,
AFEventParamContentId: "092",
"order_id": "9277",
AFEventParamReceiptId: "9277"
]);
Dictionary<string, string> purchaseEvent = new Dictionary<string, string>();
purchaseEvent.Add("af_revenue", "200");
purchaseEvent.Add("af_currency", "USD");
purchaseEvent.Add("af_quantity", "2");
purchaseEvent.Add("af_content_id", "001");
purchaseEvent.Add("order_id", "9277");
purchaseEvent.Add("af_receipt_id", "9277");
AppsFlyer.trackRichEvent ("af_purchase", purchaseEvent);
레벨 달성
이벤트 이름: af_level_achieved
목적
게임에서 사용자의 주요 목표 중 하나는 레벨을 올리는 것입니다. 레벨을 올리면 새로운 기능과 단계가 잠금 해제되고, 이에 따라 사용자는 계속해서 플레이하고 싶어집니다. 레벨 달성 이벤트를 사용하면 앱에 대한 사용자의 인게이지먼트를 기록할 수 있습니다. 레벨 달성 기록을 통해 다음을 할 수 있습니다.
- 액티브 사용자를 가장 많이 생성하는 캠페인이 무엇인지 알 수 있습니다.
- 어떤 유형의 사용자가 가장 활발하게 참여하는지 알 수 있습니다.
- 수익 등의 지표와 전반적인 사용자 활동을 연결할 수 있습니다.
트리거 로직
이 이벤트를 제대로 기록하기 위해서는, 사용자가 레벨 완료 페이지에 도달했을 때 이벤트를 트리거해야 합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_level | int | 3 | 사용자가 달성한 레벨 |
af_score | int | 500 | 사용자가 달성한 점수 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.LEVEL, 10);
eventValue.put(AFInAppEventParameterName.SCORE, 500);
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LEVEL_ACHIEVED, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventLevelAchieved
withValues: @{
AFEventParamLevel: @10,
AFEventParamScore: @500
}];
AppsFlyerTracker.shared().logEvent(AFEventLevelAchieved,
withValues: [
AFEventParamLevel: 3,
AFEventParamScore: 500
]);
Dictionary<string, string> LevelAchievedEvent = new Dictionary<string, string>();
LevelAchievedEvent.Add("af_level", "10");
LevelAchievedEvent.Add("af_score", "500");
AppsFlyer.trackRichEvent ("af_level_achieved", LevelAchievedEvent);
튜토리얼 완료
이벤트 이름: af_tutorial_completion
목적
튜토리얼은 사용자에게 앱 사용 방법을 안내합니다. 튜토리얼 완료 기록을 통해 다음을 할 수 있습니다.
- 사용자가 어떤 부분에서 어려움을 겪고 있는지 알 수 있습니다.
- 어떤 튜토리얼이 제대로 실행되지 않는지 확인하고 개선할 수 있습니다.
트리거 로직
이 이벤트를 트리거하는 두 가지 시나리오가 있습니다.
- 사용자가 튜토리얼을 완료했을 경우. 성공적인 튜토리얼 완료를 나타내는 속성과 함께 이벤트가 전송됩니다.
- 사용자가 튜토리얼을 시작했지만 완료하지 않고 중단했을 경우. 사용자가 중단했을 때, 튜토리얼이 완료되지 않았다는 것을 나타내는 속성과 함께 이벤트가 전송됩니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_success | boolean | true | 사용자가 튜토리얼을 완료했는지 여부 |
af_tutorial_id | string | 3 | 튜토리얼 ID |
af_content | string | 시작하기 | 튜토리얼 이름 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.SUCCESS, true);
eventValue.put(AFInAppEventParameterName.TUTORIAL_ID, "3");
eventValue.put(AFInAppEventParameterName.CONTENT, "Getting Started");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.TUTORIAL_COMPLETION, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventTutorial_completion
withValues: @{
AFEventParamSuccess: @TRUE,
AFEventParamTutorialId: @"3",
AFEventParamContent: @"Getting Started"
}];
AppsFlyerTracker.shared().logEvent(AFEventTutorial_completion,
withValues: [
AFEventParamSuccess: true,
AFEventParamTutorialId: "3",
AFEventParamContent: "Getting started"
]);
Dictionary<string, string> TutorialCompletiondEvent = new Dictionary<string, string>();
TutorialCompletiondEvent.Add("af_success", "true");
TutorialCompletiondEvent.Add("af_tutorial_id", "3");
TutorialCompletiondEvent.Add("af_tutorial_content", "Getting started");
AppsFlyer.trackRichEvent ("af_tutorial_completion", TutorialCompletiondEvent);
공유
이벤트 이름: af_share
목적
사용자는 게임에서 얻은 성과를 소셜 미디어에서 공유하고 싶어합니다. 공유는 브랜드 인지도를 높이고 더 많은 사용자가 앱을 다운로드하고 설치하도록 유도할 수 있습니다. 공유 이벤트를 기록함으로써 사용자가 친구들과 앱을 공유할 가능성이 가장 높은 시기를 이해할 수 있습니다.
팁
앱스플라이어 SDK에는 공유 및 초대 기록을 위한 전용 메소드가 있습니다.
트리거 로직
이 이벤트를 제대로 기록하기 위해서는, 사용자가 소셜 미디어에 성공적으로 공유를 게시했을 때 이벤트를 트리거해야 합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_description | string | 최고 기록 갱신 / 레벨 업 / 게임 승리 | 소셜 미디어에 공유하는 이유입니다. 최고 기록 갱신, 레벨업 등이 될 수 있습니다. |
platform | string | 페이스북, 왓츠앱, 이메일 | 사용자가 공유하는 플랫폼 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.DESCRIPTION, "New High Score");
eventValue.put("platform", "Facebook");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.SHARE, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventShare
withValues: @{
AFEventParamDescription: @"New High Score",
@"platform": @"Facebook"
}];
AppsFlyerTracker.shared().logEvent(AFEventShare,
withValues: [
AFEventParamDescription: "New High Score",
"platform": "Facebook"
]);
Dictionary<string, string> ShareEvent = new Dictionary<string, string>();
ShareEvent.Add("af_description", "New High Score");
ShareEvent.Add("platform", "Facebook");
AppsFlyer.trackRichEvent ("af_share", ShareEvent);
초대
이벤트 이름: af_invite
목적
사용자는 앱을 다운로드하고 설치하도록 종종 친구를 초대합니다. 많은 경우에 사용자는 앱을 공유하고 싶어하며, 어떤 때는 다른 사람을 초대한 것에 대해 보상을 받습니다. 초대 이벤트를 사용하여 초대 기록을 할 수 있습니다. 이 이벤트 기록을 통해 다음을 할 수 있습니다.
- 사용자가 일반적으로 친구를 초대하는 소셜 미디어가 어떤 것인지 알 수 있습니다.
- 얼마나 많은 사용자가 앱을 다운로드하고 설치하도록 친구를 초대했는지 알 수 있습니다.
트리거 로직
이 이벤트를 제대로 기록하기 위해서는, 사용자가 친구를 앱 다운로드 및 설치에 성공적으로 초대했을 때 이벤트를 트리거해야 합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_description | string | 이 앱 사용 | 초대 상황 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.DESCRIPTION, "Try this app");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.INVITE, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventInvite
withValues: @{
AFEventParamDescription: @"Try this app"
}];
AppsFlyerTracker.shared().logEvent(AFEventInvite, withValues: [
AFEventParamDescription: "Try this app"
]);
Dictionary<string, string> InviteEvent = new Dictionary<string, string>();
InviteEvent.Add("af_description", "Try this app");
AppsFlyer.trackRichEvent ("af_invite", InviteEvent);
보너스 신청
이벤트 이름: bonus_claimed
목적
보너스 신청 이벤트 기록을 통해 다음을 할 수 있습니다.
- 얼마나 많은 사용자가 제공된 보너스를 신청하는지 알 수 있습니다.
- 신청 보너스와 사용자 활동 및 인게이지먼트를 연결할 수 있습니다.
트리거 로직
이 이벤트를 제대로 기록하기 위해서는, 사용자가 보너스를 신청하여 계정에서 업데이트 될 때 이벤트를 트리거해야 합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
bonus_type | string | coins | 사용자가 신청한 보너스 유형 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("bouns_type", "coins");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "bonus_claimed", eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:@"bonus_claimed"
withValues: @{
@"bonus_type": @"coins"
}];
AppsFlyerTracker.shared().logEvent("bonus_claimed", withValues: [
"bouns_type": "coins"
]);
Dictionary<string, string> BonusClaimedEvent = new Dictionary<string, string>();
BonusClaimedEvent.Add("bouns_type", "coins");
AppsFlyer.trackRichEvent ("bonus_type", BonusClaimedEvent);
이커머스
이커머스 앱을 통해 구매자는 온라인으로 쉽게 물건을 검색하고 구매할 수 있습니다. 이커머스 앱의 핵심 기능 중 하나는 구매자가 가장 좋은 특가 상품을 찾기 위해 가격 비교를 할 수 있다는 것입니다. 이커머스 앱에서 이벤트 기록을 하는 것을 권장합니다. 이벤트 기록을 통해 사람들이 무엇을 찾고 있고 무엇을 구매하는지에 대한 가치 있는 인사이트를 얻을 수 있습니다.
기록을 권장하는 이벤트는 검색, 구매, 장바구니 추가, 위시리스트 추가입니다. 이 이벤트 기록을 통해 다음을 할 수 있습니다.
- 가장 인기있는 카테고리를 알 수 있습니다.
- 구매자가 무엇을 검색하는지 알 수 있습니다.
- 얼마나 많은 구매자가 결제를 완료했는지 기록할 수 있습니다.
- 반복 구매하는 사용자와 한 번만 구매하는 사용자가 얼마나 되는지 알 수 있습니다.
등록 완료
이벤트 이름: af_complete_registration
목적
등록 완료 이벤트의 목적은 앱을 다운로드하고 설치한 후에 얼마나 많은 사용자가 가입하는지를 기록하는 것입니다. 가입 방법도 기록할 수 있습니다. 예: 페이스북, 이메일 등
트리거 로직
사용자가 성공적으로 등록했을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_registration_method | string | 페이스북, 구글, 이메일 | 사용자의 가입 방법 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REGSITRATION_METHOD,"Facebook");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),AFInAppEventType.COMPLETE_REGISTRATION, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventCompleteRegistration
withValues: @{
AFEventParamRegistrationMethod: @"Facebook"
}];
AppsFlyerTracker.shared().logEvent(AFEventCompleteRegistration,
withValues: [
AFEventParamRegistrationMethod: "Facebook"
]);
Dictionary<string, string> CompleteRegistrationEvent = new Dictionary<string, string>();
CompleteRegistrationEvent.Add("af_registration_method", "Facebook");
AppsFlyer.trackRichEvent("af_complete_registration", CompleteRegistrationEvent);
로그인
이벤트 이름: af_login
목적
로그인 이벤트를 사용하여 얼마나 많은 사용자가 계정에 로그인하는지 기록할 수 있습니다. 로그인 이벤트를 사용하여 다음을 기록할 수 있습니다.
- 얼마나 많은 사용자가 액티브 사용자인지 알 수 있습니다.
- 사용자가 언제 가장 활발하게 활동하는지 알 수 있습니다.
트리거 로직
사용자가 성공적으로 로그인했을 때 이벤트를 트리거합니다.
권장 속성
이 이벤트는 추가 속성 없이 전송될 수 있습니다.
코드 예
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LOGIN, null);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventLogin withValues: nil];
AppsFlyerTracker.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.trackRichEvent("af_login", null);
검색
이벤트 이름: af_search
목적
검색 이벤트 기록을 통해 사용자가 무엇을 찾고 있는지 알 수 있습니다. 또한 어떤 검색 결과가 가장 연관성이 높은지도 알 수 있습니다. 그리고 어떤 검색 결과가 구매를 유도하는지도 기록할 수 있습니다.
트리거 로직
다음 두 시나리오 중 하나의 경우에 트리거해야 합니다.
- 사용자가 검색 버튼을 클릭했을 때
- 사용자가 검색 결과 페이지를 방문했을 때
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_search_string | string | 빨간색 드레스, 운동화 | 검색어 |
af_content_list | string 배열 | 001, 092 | 콘텐츠 ID 목록 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.SEARCH_STRING, "red shoes");
eventValue.put(AFInAppEventParameterName.CONTENT_LIST, new String[] {"001", "092"});
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.SEARCH, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventSearch
withValues: @{
AFEventParamSearchString: @"red shoes",
AFEventParamContentList: @[@"001", @"092"]
}];
AppsFlyerTracker.shared().logEvent(AFEventSearch, withValues: [
AFEventParamSearchString: "red shoes",
AFEventParamContentList: ["001", "092"]
]);
Dictionary<string, string> SearchEvent = new Dictionary<string, string>();
SearchEvent.Add("af_search_string", "red shoes");
SearchEvent.Add("af_content_list", "['001', '092']");
AppsFlyer.trackRichEvent("af_search", SearchEvent);
콘텐츠 보기
이벤트 이름: af_content_view
목적
콘텐츠 열람 이벤트를 사용하면 특정 상품의 열람율을 기록할 수 있습니다. 이 이벤트 기록을 통해 다음을 할 수 있습니다.
- 제품 판매와 열람과의 상관 관계를 알 수 있습니다.
- 어떤 카테고리가 가장 인기가 있는지 제품 열람을 통해 알 수 있습니다.
- 구매자가 보고있는 제품과 통화와의 상관 관계를 알 수 있습니다.
트리거 로직
사용자가 특정 제품의 상세 정보 페이지를 열람할 때 이벤트를 트리거해야 합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_price | float | 2000 | 제품 가격 |
af_content_id | string | 102 | 제품 ID |
af_content_type | string | 신발 | 제품 카테고리 |
af_currency | string | THB, USD | 제품 상세 정보 페이지의 통화 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 2000);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "102";
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "shoes");
eventValue.put(AFInAppEventParameterName.CURRENCY, "USD");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.CONTENT_VIEW, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventContentView
withValues: @{
AFEventParamPrice: @2000,
AFEventParamContentId: @"102",
AFEventParamContentType: @"shoes",
AFEventParamCurrency: @"USD"
}];
AppsFlyerTracker.shared().logEvent(AFEventContentView,
withValues: [
AFEventParamPrice: 2000,
AFEventParamContentId: "102",
AFEventParamContentType: "shoes",
AFEventParamCurrency: "USD"
]);
Dictionary<string, string> ContentViewEvent = new Dictionary<string, string>();
ContentViewEvent.Add("af_price", "2000");
ContentViewEvent.Add("af_content_type", "shoes");
ContentViewEvent.Add("af_currency", "USD");
AppsFlyer.trackRichEvent("af_content_view", ContentViewEvent);
목록 보기
이벤트 이름: af_list_view
목적
이커머스 플랫폼에서 신규 추가 제품, 연관 제품, 추천 제품과 같은 카테고리 별로 제품을 표시하는 목록이 있는 것은 일반적입니다. 목록 보기 이벤트를 사용하면 구매자가 가장 많이 열람하는 목록을 기록할 수 있습니다.
트리거 로직
구매자가 특정 목록을 보고있을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_content_type | string | 연관, 추천, 신상품 | 목록 유형 |
af_content_list | string 배열 | 001, 092 | 카테고리의 콘텐츠 ID 목록 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "related products");
eventValue.put(AFInAppEventParameterName.CONTENT_LIST, new String[] {"001", "092"});
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "af_list_view", eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventListView
withValues: @{
AFEventParamContentType: @"related products",
AFEventParamContentList: @[@"001", @"092"]
}];
AppsFlyerTracker.shared().logEvent(AFEventListView,
>withValues: [
AFEventParamContentType: "related products",
AFEventParamContentList: ["001", "092"]
]);
Dictionary<string, string> ListViewEvent = new Dictionary<string, string>();
ListViewEvent.Add("af_content_type", "related products");
ListViewEvent.Add("af_content_list", "['001', '092']");
AppsFlyer.trackRichEvent("af_list_view", ListViewEvent);
위시리스트에 추가
이벤트 이름: af_add_to_wishlist
목적
위시리스트 추가 이벤트를 기록함으로써, 구매자가 위시리스트에 추가한 제품과 카테고리를 기록할 수 있습니다. 어떤 제품이 위시리스트에 가장 자주 추가되는지를 알게 되면, 이 제품을 할인 판매하거나 좋은 조건을 제시하여 구매를 촉진할 수 있습니다. 위시리스트에 추가한 제품에 따라 사용자를 리타겟팅할 수도 있습니다.
트리거 로직
구매자가 위시리스트에 아이템을 추가했을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_price | float | 600 | 제품 가격 |
af_content_id | string | 300 | 제품 ID |
af_content_type | string | 신발, 전자 제품 | 제품 카테고리 |
af_currency | string | GBP | 제품 상세 정보 페이지에 표시된 통화 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 600);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "300");
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "electronics");
eventValue.put(AFInAppEventParameterName.CURRENCY, "GBP");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.ADD_TO_WISH_LIST, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventAddToWishlist
withValues: @{
AFEventParamPrice: @600,
AFEventParamContentId: @"300",
AFEventParamContentType: @"electronics",
AFEventParamCurrency: @"GBP"
}];
AppsFlyerTracker.shared().logEvent(AFEventAddToWishlist,
withValues: [
AFEventParamPrice: 600,
AFEventParamContentId: "300",
AFEventParamContentType: "electronics",
AFEventParamCurrency: "GBP"
]);
Dictionary<string, string> AddToWishListEvent =
new Dictionary<string, string>();
AddToWishListEvent.Add("af_price", "600");
AddToWishListEvent.Add("af_content_id", "300");
AddToWishListEvent.Add("af_content_type", "electronics");
AddToWishListEvent.Add("af_currency", "GBP");
AppsFlyer.trackRichEvent("af_add_to_wishlist", AddToWishListEvent);
장바구니 추가
이벤트 이름: af_add_to_cart
목적
장바구니 추가 이벤트의 목적은 장바구니에 제품을 추가하는 것을 기록하는 것입니다. 이 이벤트 기록을 통해 다음을 할 수 있습니다.
- 구매자가 한 번의 구매에서 평균적으로 얼마나 많은 제품을 장바구니에 추가하는지를 알 수 있습니다.
- 두 개의 다른 제품을 추가할 때 걸리는 시간 간격을 알 수 있습니다.
- 장바구니에 제품을 넣은 후에 구매하지 않는 사용자가 얼마나 되는지를 알 수 있습니다.
트리거 로직
구매자가 제품을 장바구니에 넣었을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_price | float | 350, 1000 | 제품 가격 |
af_content_id | string | 001, 092 | 제품 ID |
af_content_type | string | 셔츠, 신발 | 제품 유형 |
af_currency | string | THB, USD | 제품 통화 |
af_quantity | float | 2, 5 | 동일한 제품을 장바구니에 추가한 개수 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 350);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "001");
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "shirt");
eventValue.put(AFInAppEventParameterName.CURRENCY, "USD");
eventValue.put(AFInAppEventParameterName.QUANTITY, 2);
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.ADD_TO_CART, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventAddToCart
withValues: @{
AFEventParamPrice: @350,
AFEventParamContentId: @"001",
AFEventParamContentType: @"shirt",
AFEventParamCurrency: @"USD",
AFEventParamQuantity: @2
}];
AppsFlyerTracker.shared().logEvent(AFEventAddToCart, withValues: [
AFEventParamPrice: 350,
AFEventParamContentId: "001",
AFEventParamContentType: "shirt",
AFEventParamCurrency: "USD",
AFEventParamQuantity: 2
]);
Dictionary<string, string> AddToCartEvent = new Dictionary<string, string>();
AddToCartEvent.Add("af_price", "350");
AddToCartEvent.Add("af_content_id", "001");
AddToCartEvent.Add("af_content_type", "shirt");
AddToCartEvent.Add("af_currency", "USD");
AddToCartEvent.Add("af_quantity", "2");
AppsFlyer.trackRichEvent("af_add_to_cart", AddToCartEvent);
결제
이벤트 이름: af_initiated_checkout
목적
결제 시작 이벤트 기록을 통해 결제할 때의 구매자 행동을 이해할 수 있습니다. 예를 들어, 다음을 할 수 있습니다.
- 구매자가 결제할 때의 평균 가격을 알 수 있고 구매 이벤트의 평균 가격과 비교할 수 있습니다.
- 사용자가 결제 진행 이후에 제품을 추가하거나 삭제하는지 여부를 알 수 있습니다.
트리거 로직
구매자가 결제를 시작했지만 결제를 완료하지 않았을 때 이벤트를 트리거합니다.
권장 속성
팁
만약 다른 카테고리의 제품이 여러 개 있으면 데이터 전송 시 배열을 사용합니다.
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_price | float | 4000 | 장바구니에 담긴 총금액 |
af_content_id | string 또는 string 배열 | 221, 124 | 장바구니에 담긴 제품 ID |
af_content_type | string 또는 string 배열 | 셔츠, 바지 | 제품 카테고리 목록 |
af_currency | string | THB | 결제 통화 |
af_quantity | int 또는 int 배열 | 2, 5 | 장바구니에 담긴 총 개수 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 350);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "221");
// for multiple product categories, set the param value as: new String {"221", "124"}
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "shirt");
// for multiple product categories,, set the param value as: new String {"shirt", "pants"}
eventValue.put(AFInAppEventParameterName.CURRENCY, "USD");
eventValue.put(AFInAppEventParameterName.QUANTITY, 2);
// for multiple product categories,, set the param value as: new int {2, 5}
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.INITIATED_CHECKOUT, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventInitiatedCheckout
withValues: @{
AFEventParamPrice: @350,
AFEventParamContentId: @"221",
// for multiple product categories, set the param value as: @[@"221", @"124"]
AFEventParamContentType: @"shirt",
// for multiple product categories, set the param value as: @[@"shirt", @"pants"]
AFEventParamCurrency: @"USD",
AFEventParamQuantity: @2
// for multiple product categories, set the param value as: @[@2, @5]
}];
AppsFlyerTracker.shared().logEvent(AFEventInitiatedCheckout,
withValues: [AFEventParamPrice: 350,
AFEventParamContentId: "221",
// for multiple product categories, set the param value as: ["221", "124"]*/
AFEventParamContentType: "shirt",
// for multiple product categories, set the param value as: ["shirt", "pants"] AFEventParamCurrency: "USD",
AFEventParamQuantity: 2
//for multiple product categories, set the param value as: [2, 5]
]);
Dictionary<string, string> InitiatedCheckoutEvent = new Dictionary<string, string>();
InitiatedCheckoutEvent.Add("af_price", "350");
InitiatedCheckoutEvent.Add("af_content_id", "001");
InitiatedCheckoutEvent.Add("af_content_type", "shirt");
InitiatedCheckoutEvent.Add("af_currency", "USD");
InitiatedCheckoutEvent.Add("af_quantity", "2");
AppsFlyer.trackRichEvent ("af_initiated_checkout", InitiatedCheckoutEvent);
구매
이벤트 이름: af_purchase
목적
구매 이벤트는 이커머스에서 가장 중요한 이벤트 중 하나입니다. 구매 이벤트 기록을 통해 이커머스 앱에서의 구매 트렌드에 대해 많이 알 수 있습니다. 구매 이벤트 기록을 통해 다음을 할 수 있습니다.
- 얼마나 많은 사용자가 실제 구매자인지 알 수 있습니다.
- 가장 활발한 구매자를 기록하고 그들의 구매 이력에 따라 특가 상품으로 리타겟팅할 수 있습니다.
- 어떤 제품과 카테고리가 전반적으로 구매가 잘 이루어지는지 알 수 있습니다.
- 제품 및 카테고리 전체에서 생성된 구매 수익을 기록할 수 있습니다.
- 캠페인 및 미디어소스에서 생성된 수익을 기록할 수 있습니다.
트리거 로직
구매자가 구매를 마쳤지만 필요한 결제를 하지 않았을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_revenue | float | 1200 | 구매 수익 |
af_price | float | 4000 | 전체 구매액 |
af_content_id | string | 121, 262 | 아이템 ID |
af_content_type | string | 신발, 바지 | 아이템 카테고리 |
af_currency | string | AUD | 통화 |
af_quantity | int | 2, 5 | 장바구니에 담긴 아이템 개수 |
af_order_id | string | X123ABC | 구매한 다음에 발생한 주문 ID |
af_receipt_id | string | X123ABC | 크리테오 및 구글 애드워즈 리타겟팅 연동에 필요한 주문 ID |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 350);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "221");
// for multiple product categories, set the param value as: // new String {"221", "124"}
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "shirt");
// for multiple product categories,, set the param value as: new String {"shoes", "pants"}
eventValue.put(AFInAppEventParameterName.CURRENCY, "USD");
eventValue.put(AFInAppEventParameterName.QUANTITY, 2);
// for multiple product categories, set the param value as: new int {2, 5}
eventValue.put(AFInAppEventParameterName.RECEIPT_ID, "X123ABC");
eventValue.put("af_order_id", "X123ABC");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.PURCHASE, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventPurchase
withValues: @{
AFEventParamRevenue: @1200,
AFEventParamPrice: @4000,
AFEventParamContentId: @"221",
// for multiple product categories, set the param value as:
// @[@"221", @"124"]
AFEventParamContentType: @"shirt",
// for multiple product categories, set the param value as:
// @[@"shoes", @"pants"]
AFEventParamCurrency: @"USD",
AFEventParamQuantity: @2,
// for multiple product categories, set the param value as:
// @[@2, @5]
AFEventParamOrderId: @"X123ABC",
AFEventParamReceiptId: @"X123ABC"
}];
AppsFlyerTracker.shared().logEvent(AFEventPurchase, withValues: [
AFEventParamRevenue: 1200,
AFEventParamPrice: 4000,
AFEventParamContentId: "221",
// for multiple product categories, set the param value as: ["221", "124"],
AFEventParamContentType: "shirt",
// for multiple product categories, set the param value as: ["shoes", "pants"]
AFEventParamCurrency: "USD",
AFEventParamQuantity: 2,
// for multiple product categories, set the param value as: [2, 5]
AFEventParamOrderId: "X123ABC",
AFEventParamReceiptId: "X123ABC"
]);
Dictionary<string, string> PurchaseEvent = new Dictionary<string, string>();
PurchaseEvent.Add("af_revenue", "1200");
PurchaseEvent.Add("af_price", "4000");
PurchaseEvent.Add("af_content_id", "121");
// for multiple product categories, set the param value as: ["221", "124"]
PurchaseEvent.Add("af_content_type", "shoes");
// for multiple product categories, set the param value as: ["shirt", "pants"]
PurchaseEvent.Add("af_currency", "USD");
PurchaseEvent.Add("af_quantity", "2");
// for multiple product categories, set the param value as: [2, 5]
PurchaseEvent.Add("af_order_id", "X123ABC");
PurchaseEvent.Add("af_receipt_id", "X123ABC");
AppsFlyer.trackRichEvent ("af_purchase", PurchaseEvent);
구매 완료
이벤트 이름: completed_purchase
목적
구매 완료 이벤트 기록을 통해 구매에서 실제로 지불이 이루어진 방법을 분석할 수 있습니다.
트리거 로직
이 이벤트는 백엔드에서 발생하므로, 사용자가 구매에 대해 지불 완료할 때, S2S를 사용하여 이벤트가 전송됩니다.
중요!
만약 결제가 오프라인에서 이루어지면, 이 이벤트를 전송해야 합니다. 예: 은행 이체 또는 배달 시 현금 지불 등. 이 이벤트를 전송할 때는 구매 이벤트(af_purchase
)에 af_revenue
파라미터를 포함시키지 않아야 합니다. 두 이벤트를 모두 af_revenue
파라미터와 함께 전송하면 수익이 두 번 계산됩니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_revenue | float | 4000 | 구매로 발생한 수익 |
af_order_id | string | X123ABC | 구매에서 생성된 주문 ID |
af_receipt_id | string | X123ABC | 구매자용 영수증 ID |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REVENUE, 4000);
eventValue.put(AFInAppEventParameterName.RECEIPT_ID, "X123ABC");
eventValue.put("af_order_id" "X123ABC");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "completed_purchase", eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:@"completed_purchase"
withValues: @{
AFEventParamRevenue: @4000,
AFEventParamOrderId: @"X123ABC",
AFEventParamReceiptId: @"X123ABC"
}];
AppsFlyerTracker.shared().logEvent("completed_purchase", withValues: [
AFEventParamRevenue: 4000,
AFEventParamOrderId: "X123ABC",
AFEventParamReceiptId: "X123ABC"
]);
Dictionary<string, string> CompletedPurchaseEvent = new Dictionary<string, string>();
CompletedPurchaseEvent.Add("af_revenue", "1200");
CompletedPurchaseEvent.Add("af_order_id", "X123ABC");
CompletedPurchaseEvent.Add("af_receipt_id", "X123ABC");
AppsFlyer.trackRichEvent ("completed_purchase", CompletedPurchaseEvent);
장바구니에서 제거
이벤트 이름: remove_from_cart
목적
장바구니에서 제거 기록을 통해 다음을 할 수 있습니다.
- 구매자가 장바구니에서 어떤 아이템을 제거했는지 알 수 있습니다.
- 구매자가 장바구니에서 제거한 아이템의 제품 카테고리를 알 수 있습니다.
- 장바구니에 담기 이벤트의 데이터와 비교하여, 결제하지 않은 제품에 대한 인사이트를 얻을 수 있습니다.
트리거 로직
구매자가 장바구니에서 아이템을 제거했을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_content_id | string | 521 | 아이템 또는 제품 ID |
af_content_type | string | 신발 | 아이템 또는 제품 카테고리 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "521");
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "shoes");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "remove_from_cart", eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:@"remove_from_cart"
withValues: @{
AFEventParamContentId: @"521",
AFEventParamContentType: @"shoes",
}];
AppsFlyerTracker.shared().logEvent("remove_from_cart", withValues: [
AFEventParamContentId: "521",
AFEventParamContentType: "shoes",
]);
Dictionary<string, string> RemoveFromCartEvent = new Dictionary<string, string>();
RemoveFromCartEvent.Add("af_content_id", "521");
RemoveFromCartEvent.Add("af_content_type", "shoes");
AppsFlyer.trackRichEvent ("remove_from_cart", RemoveFromCartEvent);
첫 구매
이벤트 이름: first_purchase
목적
이 이벤트는 구매 이벤트와 같습니다. 하지만, 구매 이벤트와는 다르게, 첫 구매 이벤트는 다음 용도로 사용할 수 있습니다.
- 새 구매자가 구매까지 얼마나 걸리는지 알 수 있습니다.
- 처음으로 구매하는 사용자는 어떤 제품을 구매하는지 알 수 있습니다.
- 첫 구매의 평균 가격 및 수익을 알 수 있습니다.
트리거 로직
사용자가 첫 번째 구매를 완료했을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_revenue | float | 1200 | 구매 수익 |
af_price | float | 4000 | 전체 구매액 |
af_content_id | string | 121, 262 | 아이템 ID |
af_content_type | string | 신발, 바지 | 아이템 카테고리 |
af_currency | string | AUD | 통화 |
af_quantity | int | 2, 5 | 장바구니에 담긴 아이템 개수 |
af_order_id | string | X123ABC | 구매한 다음에 발생한 주문 ID |
af_receipt_id | string | X123ABC | 크리테오 및 구글 애드워즈 리타겟팅 연동에 필요한 주문 ID |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 350);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "221");
// for multiple product categories, set the param value as: new String {"221", "124"}
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "shirt");
// for multiple product categories set the param value as: new String {"shoes", "pants"}
eventValue.put(AFInAppEventParameteName.CURRENCY, "USD");
eventValue.put(AFInAppEventParameterName.QUANTITY, 2);
// for multiple product categories, set the param value as: new int {2, 5}
eventValue.put(AFInAppEventParameterName.RECEIPT_ID, "X123ABC");
eventValue.put("af_order_id", "X123ABC");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "first_purchase", eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:("first_purchase")
withValues: @{
AFEventParamRevenue: @1200,
AFEventParamPrice: @4000,
AFEventParamContentId: @"221",
// for multiple product categories, set the param value as: @[@"221", @"124"]
AFEventParamContentType: @"shirt",
// for multiple product categories, set the param value as: @[@"shoes", @"pants"]
AFEventParamCurrency: @"USD",
AFEventParamQuantity: @2,
// for multiple product categories, set the param value as: @[@2, @5]
AFEventParamOrderId: @"X123ABC",
AFEventParamReceiptId: @"X123ABC"
}];
AppsFlyerTracker.shared().logEvent("first_purchase", withValues: [
AFEventParamRevenue: 1200,
AFEventParamPrice: 4000,
AFEventParamContentId: "221",
// for multiple product categories, set the param value as: ["221", "124"]
AFEventParamContentType: "shirt",
// for multiple product categories, set the param value as: ["shoes", "pants"]
AFEventParamCurrency: "USD",
AFEventParamQuantity: 2,
// for multiple product categories, set the param value as: // [2, 5]
AFEventParamOrderId: "X123ABC",
AFEventParamReceiptId: "X123ABC"
]);
Dictionary<string, string> FirstPurchaseEvent = new Dictionary<string, string>();
FirstPurchaseEvent.Add("af_revenue", "1200");
FirstPurchaseEvent.Add("af_price", "4000");
FirstPurchaseEvent.Add("af_content_id", "121");
// for multiple product categories, set the param value as: ["221", "124"]
FirstPurchaseEvent.Add("af_content_type", "shoes");
// for multiple product categories, set the param value as: ["shirt", "pants"]
FirstPurchaseEvent.Add("af_currency", "USD");
FirstPurchaseEvent.Add("af_quantity", "2");
// for multiple product categories, set the param value as: [2, 5]
FirstPurchaseEvent.Add("af_order_id", "X123ABC");
FirstPurchaseEvent.Add("af_receipt_id", "X123ABC");
AppsFlyer.trackRichEvent ("first_purchase", FirstPurchaseEvent);
엔터테인먼트 - 스트리밍
주문형 콘텐츠(on-demand contents)에 대한 사용자의 요구가 증가하면서, 스트리밍 어플리케이션 시장은 경쟁이 매우 치열해졌습니다. 주문형 콘텐츠 스트리밍 앱을 운영하고 있다면 앱에서의 이벤트 기록을 권장합니다.
팁
여기에서 언급한 이벤트는 다음과 같은 스마트 TV에서 실행되는 스트리밍 앱에도 해당됩니다.
- 안드로이드 스마트 TV
- 애플 TV (tvOS)
- 아마존 Fire TV
스트리밍 어플리케이션의 이벤트 기록을 통해 다음을 할 수 있습니다.
- 사용자가 소비하는 콘텐츠가 무엇인지 알 수 있습니다.
- 콘텐츠 수요에 따라 캠페인을 분석하고 최적화할 수 있습니다.
- 사용자 인게이지먼트와 사용도를 측정할 수 있습니다.
등록 완료
이벤트 이름: af_complete_registration
목적
등록 완료 이벤트의 목적은 앱을 다운로드하고 설치한 후에 얼마나 많은 사용자가 가입하는지를 기록하는 것입니다. 가입 방법도 기록할 수 있습니다. 예: 페이스북, 이메일 등. 사용자가 선호하는 가입 방법을 알아보십시오.
트리거 로직
사용자가 성공적으로 등록했을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_registration_method | string | 페이스북, 구글, 이메일 | 사용자의 가입 방법 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REGSITRATION_METHOD, "Facebook");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.COMPLETE_REGISTRATION, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventCompleteRegistration
withValues: @{
AFEventParamRegistrationMethod: @"Facebook"
}];
AppsFlyerTracker.shared().logEvent(AFEventCompleteRegistration,
withValues: [
AFEventParamRegistrationMethod: "Facebook"
]);
Dictionary<string, string> CompleteRegistrationEvent = new Dictionary<string, string>();
CompleteRegistrationEvent.Add("af_registration_method", "Facebook");
AppsFlyer.trackRichEvent("af_complete_registration", CompleteRegistrationEvent);
로그인
이벤트 이름: af_login
목적
로그인 이벤트를 사용하여 얼마나 많은 사용자가 계정에 로그인하는지 기록할 수 있습니다. 로그인 이벤트를 사용하여 다음을 기록할 수 있습니다.
- 얼마나 많은 사용자가 액티브 사용자인지 알 수 있습니다.
- 사용자가 언제 가장 활발하게 활동하는지 알 수 있습니다.
트리거 로직
사용자가 성공적으로 로그인했을 때 이벤트를 트리거합니다.
권장 속성
이 이벤트는 추가 속성 없이 전송될 수 있습니다.
코드 예
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LOGIN, null);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventLogin withValues: nil];
AppsFlyerTracker.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.trackRichEvent("af_login", null);
무료 체험 시작
이벤트 이름: af_start_trial
목적
많은 스트리밍 서비스는 프리미엄 기능을 써볼 수 있도록 사용자에게 체험 기간을 제공합니다. 체험 시작 이벤트 기록을 통해 다음을 할 수 있습니다.
- 얼마나 많은 사용자가 무료 체험에 참여하는지를 알 수 있습니다.
- 무료 체험이 프로모션이나 파트너와의 협업의 일부인 경우에, 사용자가 체험 기간을 활성화하도록 유도한 프로모션이 무엇인지 기록할 수 있습니다.
트리거 로직
사용자가 무료 체험에 참여하고 무료 체험을 시작했을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
trial_method | string | 새 휴대폰 무료, 통신사 무료, 프로모션, 쿠폰 코드 | 무료 체험을 유도한 방법 |
trial_method_identifier | string |
통신사 이름 예: Vodafone, 파트너 이름 예: Facebook, 쿠폰 코드 예: TRA123 |
무료 체험 방법 식별자 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("trial_method", "coupon code");
eventValue.put("trial_method_identifier", "TRA123");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.START_TRIAL, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventStartTrial
withValues: @{
@"trial_method": @"coupon code",
@"trial_method_identifier": @"TRA123"
}]
AppsFlyerTracker.shared().logEvent(AFEventStartTrial,
withValues: [
"trial_method": "coupon code",
"trial_method_identifier": "TRA123"
]);
Dictionary<string, string> SubscriptionTrial = new Dictionary<string, string>();
SubscriptionTrial.Add("trial_method ", "coupon code");
SubscriptionTrial.Add("trial_method_identifier", "TRA123");
AppsFlyer.trackRichEvent("af_start_trial", SubscriptionTrial);
구독
이벤트 이름: af_subscribe
목적
구독은 스트리밍 서비스의 핵심입니다. 사용자 구독 이벤트 기록을 통해 다음을 할 수 있습니다.
- 사용자를 구독까지 유도한 캠페인이 무엇인지 알 수 있습니다.
- 구독한 사용자와 체험 사용자의 숫자를 비교할 수 있습니다.
- 구독에서 발생한 수익을 기록하고 캠페인이나 미디어소스로 어트리뷰트 할 수 있습니다.
트리거 로직
다음 두 시나리오 중 하나의 경우에 트리거해야 합니다.
- 사용자가 성공적으로 구독 신청을 했을 때
- 구독이 갱신되었을 때
팁
더 자세한 정보는 구독 이벤트 기록 가이드를 참조하십시오.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
new_subscription | boolean | true / false | 신규 구독인지 구독 갱신인지 여부 |
af_coupon_code | string | 3MonthsSubscription | 구독 중에 사용된 쿠폰 코드 |
coupon_code_value | string | 10% | 초기 가격 대비 쿠폰 할인 금액 |
af_revenue | float | 5 | 구독 수익 |
af_currency | string | USD | 구독 결제 통화 |
subscription_method | string | 신용카드, 전자 지갑, PayPal | 구독에 사용된 결제 수단 |
expiration_date | string | 2018/07/18 | 구독 만료 날짜 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("new_subscription", true);
eventValue.put(AFInAppEventParameterName.COUPON_CODE, "3MonthsSubscription");
eventValue.put("coupon_code_value", "10%");
eventValue.put(AFInAppEventParameterName.REVENUE, 5);
eventValue.put(AFInAppEventParameterName.CURRENCY, "USD");
eventValue.put("subscription_method", "");
eventValue.put("expiration_date", "2018/07/18");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.SUBSCRIBE, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventSubscribe
withValues: @{
@"new_subscription": @TRUE,
AFEventParamCouponCode: @"3MonthsSubscription",
@"coupon_code_value": @"10%",
AFEventParamRevenue: @5,
AFEventParamCurrency: @"USD",
@"subscription_method": @"",
@"expiration_date": @"2018/07/18"
}];
AppsFlyerTracker.shared().logEvent(AFEventSubscribe,
withValues: [
"new_subscription": true,
AFEventParamCouponCode: "3MonthsSubscription",
"coupon_code_value": "10%",
AFEventParamRevenue: 5,
AFEventParamCurrency: "USD",
"subscription_method": "",
"expiration_date": "2018/07/18"
]);
Dictionary<string, string> Subscription = new Dictionary<string, string>();
Subscription.Add("new_subscription", "true");
Subscription.Add("af_coupon_code", "3MonthsSubscription");
Subscription.Add("coupon_code_value", "10%");
Subscription.Add("af_revenue", "5");
Subscription.Add("af_currency", "USD");
Subscription.Add("subscription_method", "");
Subscription.Add("expiration_date", "2018/07/18");
AppsFlyer.trackRichEvent("af_subscribe", Subscription);
미디어 재생
이벤트 이름: media_play
목적
미디어 재생 이벤트 기록은 사용자의 미디어 재생을 기록합니다. 미디어에는 동영상, 음악, TV 쇼, 라디오 쇼 등이 있습니다. 하나 이상의 미디어를 제공하고 있다면 서로 다른 미디어와 콘텐츠 유형 사이의 재생 비율을 기록할 수 있습니다. 예를 들어, 사용자가 비디오보다 음악을 더 재생하는지 알 수 있습니다. 또한 영화보다 TV 쇼를 더 많이 보는 지 알 수 있습니다. 추가적으로, 미디어 재생 이벤트 기록을 통해 다음을 할 수 있습니다.
- 콘텐츠 및 유형별 미디어 소비를 기록할 수 있습니다.
- 가장 인기있는 스트리밍 콘텐츠의 언어를 알 수 있습니다.
- 스트리밍 콘텐츠의 최소, 최대, 평균 재생 시간을 알 수 있습니다.
트리거 로직
스트리밍 콘텐츠에 대해 사전에 정의한 기간 이후에 이벤트를 트리거합니다(예: 2분).
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_content_type | string | tv show, music | 스트리밍 콘텐츠 유형 |
af_content_id | string | 092, E34 | 스트리밍 콘텐츠 ID |
af_content | string | Title of content | 콘텐츠 제목, 예: 노래 제목, TV 쇼 제목 및 에피소드 등 |
media_duration | float | 5 | 재생 시간 |
language | string | en-us, fr, es | 콘텐츠 언어 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "tv show");
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "E34");
eventValue.put(AFInAppEventParameterName.CONTENT, "My Show");
eventValue.put("media_duration", 5);
eventValue.put("language", "en-us");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "media_play", eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:@"media_play"
withValues: @{
AFEventParamContentType: @"tv show",
AFEventParamContentId: @"E34",
AFEventParamContent: @"My Show",
@"duration": @5,
@"langague": @"en-us"
}];
AppsFlyerTracker.shared().logEvent("media_play",
withValues: [
AFEventParamContentType: "tv show",
AFEventParamContentId: "E34",
AFEventParamContent: "My Show",
"media_duration": 5,
"language": "en-us"
]);
Dictionary<string, string> MediaPlay = new Dictionary<string, string>();
MediaPlay.Add("af_content_type", "tv show");
MediaPlay.Add("af_content_id", "E34");
MediaPlay.Add("af_content", "My show");
MediaPlay.Add("media_duration", "5");
MediaPlay.Add("language", "en-us");
AppsFlyer.trackRichEvent("media_play", MediaPlay);
미디어 사용 시간
이벤트 이름: media_minutes
목적
미디어 사용 시간(media minutes)은 사용자가 주어진 콘텐츠를 얼마나 사용했는지를 나타냅니다. 스트리밍 업계에서는 수익 지표 다음으로 가장 중요한 측정 지표입니다. 사용자가 서비스를 얼마나 사용하는지 알 수 있기 때문에 이 지표는 중요합니다. 또한 전반적인 서비스의 사용률과 어떤 콘텐츠가 가장 인기가 있는지 알 수 있습니다. 파라미터 minutes_consumed를 이용하여 미디어 사용시간을 기록함으로써, 다음을 할 수 있습니다.
- 서비스를 많이 사용하는 사용자와 그렇지 않은 사용자를 알 수 있습니다.
- 어떤 미디어 유형 및 콘텐츠가 인기가 있는지 알 수 있습니다.
트리거 로직
다음 두 시나리오 중 하나의 경우에 트리거해야 합니다.
- 사용자가 미디어 스트리밍을 완료할 때
- 사용자가 미디어 스트리밍을 중단할 때
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
minutes_consumed | float | 3 | 사용자에 의한 미디어 실제 실행 시간 |
af_content_type | string | tv show, music | 스트리밍 콘텐츠 유형 |
af_content_id | string | 092, E34 | 스트리밍 콘텐츠 ID |
af_content | string | Title of content | 콘텐츠 제목, 예: 노래 제목, TV 쇼 제목 및 에피소드 등 |
media_duration | float | 5 | 재생 시간 |
language | string | en-us, fr, es | 콘텐츠 언어 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "tv show");
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "E34");
eventValue.put(AFInAppEventParameterName.CONTENT, "My Show");
eventValue.put("media_duration", 5);
eventValue.put("language", "en-us");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),"media_minutes", eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:@"media_minutes"
withValues: @{
@"minutes_consumed": @3,
AFEventParamContentType: @"tv show",
AFEventParamContentId: @"E34",
AFEventParamContent: @"My Show",
@"duration": @5,
@"langague": @"en-us"
}];
AppsFlyerTracker.shared().logEvent("media_minutes", withValues: [
"minutes_consumed": 3,
AFEventParamContentType: "tv show",
AFEventParamContentId: "E34",
AFEventParamContent: "My Show",
"media_duration": 5,
"language": "en-us"
]);
Dictionary<string, string> MediaMinutes =
new Dictionary<string, string>();
MediaMinutes.Add("minutes_consumed", "3");
MediaMinutes.Add("af_content_type", "tv show");
MediaMinutes.Add("af_content_id", "E34");
MediaMinutes.Add("af_content", "My show");
MediaMinutes.Add("media_duration", "5");
MediaMinutes.Add("language", "en-us");
AppsFlyer.trackRichEvent("media_minutes", MediaMinutes);
미디어 다운로드
이벤트 이름: media_downloaded
목적
다운로드한 미디어 기록을 통해 사용자 기본 설정에서 강조하는데 도움이됩니다. 미디어 재생과 미디어 다운로드를 기록하고 서로 비교할 수 있습니다. 사용자가 스트리밍으로 재생하는 것을 선호하는 미디어와 다운로드해서 재생하는 것을 선호하는 미디어를 알 수 있습니다.
트리거 로직
사용자가 미디어 다운로드를 시작할 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_content_type | string | tv show, music | 콘텐츠 유형 |
af_content_id | string | 092, E34 | 콘텐츠 ID |
af_content | string | Title of content | 콘텐츠 제목, 예: 노래 제목, TV 쇼 제목 및 에피소드 등 |
media_duration | float | 5 | 재생 시간 |
language | string | en-us, fr, es | 콘텐츠 언어 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "tv show");
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "E34");
eventValue.put(AFInAppEventParameterName.CONTENT, "My Show");
eventValue.put("media_duration", 5);
eventValue.put("language", "en-us");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "media_downloaded", eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:@"media_downloaded"
withValues: @{
@"minutes_consumed": @3,
AFEventParamContentType: @"tv show",
AFEventParamContentId: @"E34",
AFEventParamContent: @"My Show",
@"duration": @5,
@"langague": @"en-us"
}];
AppsFlyerTracker.shared().logEvent("media_downloaded",
withValues: [
"minutes_consumed": 3,
AFEventParamContentType: "tv show",
AFEventParamContentId: "E34",
AFEventParamContent: "My Show",
"media_duration": 5,
"language": "en-us"
]);
Dictionary<string, string> MediaDownloaded = new Dictionary<string, string>();
MediaDownloaded.Add("minutes_consumed", "3");
MediaDownloaded.Add("af_content_type", "tv show");
MediaDownloaded.Add("af_content_id", "E34");
MediaDownloaded.Add("af_content", "My show");
MediaDownloaded.Add("media_duration", "5");
MediaDownloaded.Add("language", "en-us");
AppsFlyer.trackRichEvent("media_downloaded", MediaDownloaded);
미디어 저장
이벤트 이름: media_saved
목적
저장한 미디어 기록을 통해 사용자 기본 설정에서 강조하는데 도움이됩니다.
트리거 로직
미디어가 사용자 기기에 저장될 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_content_type | string | tv show, music | 콘텐츠 유형 |
af_content_id | string | 092, E34 | 콘텐츠 ID |
af_content | string | Title of content | 콘텐츠 제목, 예: 노래 제목, TV 쇼 제목 및 에피소드 등 |
media_duration | float | 5 | 재생 시간 |
language | string | en-us, fr, es | 콘텐츠 언어 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "tv show");
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "E34");
eventValue.put(AFInAppEventParameterName.CONTENT, "My Show");
eventValue.put("media_duration", 5);
eventValue.put("language", "en-us");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "media_saved", eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:@"media_saved"
withValues: @{
@"minutes_consumed": @3,
AFEventParamContentType: @"tv show",
AFEventParamContentId: @"E34",
AFEventParamContent: @"My Show",
@"duration": @5,
@"langague": @"en-us"
}];
AppsFlyerTracker.shared().logEvent("media_saved",
withValues: [
"minutes_consumed": 3,
AFEventParamContentType: "tv show",
AFEventParamContentId: "E34",
AFEventParamContent: "My Show",
"media_duration": 5,
"language": "en-us"]);
Dictionary<string, string> MediaSaved = new Dictionary<string, string>();
MediaSaved.Add("minutes_consumed", "3");
MediaSaved.Add("af_content_type", "tv show");
MediaSaved.Add("af_content_id", "E34");
MediaSaved.Add("af_content", "My show");
MediaSaved.Add("media_duration", "5");
MediaSaed.Add("language", "en-us");
AppsFlyer.trackRichEvent("media_saved", MediaSaved);
핀테크 - P2P 대출
P2P 대출은 개인과 기업이 서로 돈을 빌려주고 빌려받을 수 있는 새로운 방법입니다.
P2P 대출 앱에서 이벤트 기록하는 것을 권장합니다.
- 대출 제공자 및 차용인의 활동을 개별 기록 할 수 있습니다.
- 사람들이 제공하고 있는 대출은 어떤 유형이 있고, 반대로 사람들이 받고 싶어하는 대출은 무엇인지 알 수 있습니다.
- 평균, 최소, 최대 대출 금액 메트릭을 수집할 수 있습니다.
- 대출 승인율 및 거절율을 기록할 수 있습니다.
이벤트 기록을 통해 수집한 데이터로, 신뢰할 수 있는 차용인을 하이라이트하고 더 좋은 이자율을 제시할 수 있습니다. 마찬가지로, 가장 활발하게 활동하는 대출 제공자를 파악하고 더 낮은 수수료를 제시할 수 있습니다. 또한 어떤 유형의 대출이 사용자에게 가장 인기가 있는지 알게되고, 이러한 잠재 고객을 대상으로하는 마케팅 캠페인을 시작할 수 있습니다.
등록 제출
이벤트 이름: registration_submitted
목적
P2P 대출은 오남용의 우려가 있으므로 먼저 사용자 확인이 필요합니다. 이 확인은 등록 요청 제출을 통해 할 수 있습니다. 등록 제출 이벤트 기록을 통해 다음을 할 수 있습니다.
- 등록은 하지만 계정 확인을 하지 않는 사용자가 얼마나 되는지 알 수 있습니다.
- 등록 방법(이메일, 페이스북, 구글)과 사용자 확인 비율 간의 상관 관계를 알 수 있습니다.
트리거 로직
사용자가 P2P 서비스에 등록 요청을 제출했을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_registration_method | string | email, Facebook, Google | 사용자가 선택한 가입 방법 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REGSITRATION_METHOD, "Facebook");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "registration_submitted", eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:@"registration_submitted"
withValues: @{
AFEventParamRegistrationMethod: @"Facebook",
}];
AppsFlyerTracker.shared().logEvent("registration_submitted",
withValues: [
AFEventParamRegistrationMethod: "Facebook"
]);
Dictionary<string, string> RegistrationSubmitted = new Dictionary<string, string>();
RegistrationSubmitted.Add("af_registration_method", "Facebook");
AppsFlyer.trackRichEvent("registration_submitted", RegistrationSubmitted);
등록 완료
이벤트 이름: af_complete_registration
목적
등록 완료 이벤트 기록을 통해 얼마나 많은 사용자가 등록한 후에 실제로 사용자 확인을 하는지 알 수 있습니다. 이러한 사용자를 캠페인별로 어트리뷰트 하고, 어떤 캠페인이 활성 사용자를 생성하는지 알 수 있습니다.
트리거 로직
사용자 등록이 승인되었을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_registration_method | string | 페이스북 | 사용자가 선택한 가입 방법 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REGSITRATION_METHOD, "Facebook");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.COMPLETE_REGISTRATION, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventCompleteRegistration
withValues: @{
AFEventParamRegistrationMethod: @"Facebook"
}];
AppsFlyerTracker.shared().logEvent(AFEventCompleteRegistration,
withValues: [
AFEventParamRegistrationMethod: "Facebook"
]);
Dictionary<string, string> CompleteRegistration = new Dictionary<string, string>();
CompleteRegistration.Add("af_registration_method", "Facebook");
AppsFlyer.trackRichEvent("af_complete_registration", CompleteRegistration);
대출 양식 작성
이벤트 이름: fill_loan_form_<FORM_NAME>
목적
대출 신청인은 대출 요청 시에 몇 가지 양식을 작성해야 합니다. 잠재적인 대출 신청인이 작성한 양식을 측정하여 대출 포기율을 알 수 있습니다. 대출 포기율 확인 이외에도, 양식 작성을 시작했으나 대출 신청을 끝내지 않은 대출 신청인을 대상으로 리타겟팅 할 수도 있습니다. 이벤트를 전송할 때, 이벤트 이름에 양식 이름을 포함하십시오.
트리거 로직
대출 신청인이 양식을 제출할 때 이벤트를 트리거합니다.
권장 속성
이 이벤트는 추가 속성없이 전송될 수 있습니다.
참고
대출 제공자와 대출을 서로 연결하는 것을 권장합니다. 이를 위해서는 고객 사용자 ID를 설정해야 합니다. 고객 사용자 ID 설정은 대출 제공자와 앱스플라이어에 표시되는 앱 사용자를 매칭시키는 방법입니다. 고객 사용자 ID 설정을 하면 모든 이벤트가 이 고객 사용자 ID와 함께 전송됩니다.
코드 예
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "fill_loan_form_FORM_NAME", null);
[[AppsFlyerTracker sharedTracker] logEvent:@"fill_loan_formFORM_NAME"
withValues: nil];
AppsFlyerTracker.shared().logEvent("fill_loan_form_FORM_NAME",
withValues: nil);
AppsFlyer.trackRichEvent("fill_loan_form_FORM_NAME", null);
대출 신청 제출
이벤트 이름: submit_loan_application
목적
이 이벤트의 목적은 대출 신청을 기록하는 것입니다. 대출 신청 제출 이벤트 기록을 통해 다음을 할 수 있습니다.
- 앱에서 전체 대출 신청 건수를 기록할 수 있습니다.
- 대출 신청 시의 최대, 최소, 평균 금액을 알 수 있습니다.
- 사람들이 신청하는 대출 유형을 알 수 있습니다.
트리거 로직
사용자가 대출 신청을 성공적으로 제출했을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
loan_id | string | 1735102 | 대출 ID |
loan_amount | float | 1000 | 요청 금액 |
loan_type | string | 3 months | 대출 기간 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("loan_id", "1735102");
eventValue.put("loam_amount", 1000);
eventValue.put("loan_type", "3 months");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),"submit_loan_application", eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:@"submit_loan_application"
withValues: @{
@"loan_id": @"1735102",
@"loan_amount": @1000,
@"loan_type": @"3 months"
}];
AppsFlyerTracker.shared().logEvent("submit_loan_applications",
withValues: [
"loan_id": "1735102",
"loan_amount": 1000,
"loan_type": "3 months"
]);
Dictionary<string, string> SubmitLoanApplication = new Dictionary<string, string>();
SubmitLoanApplication.Add("loan_id", "1735102");
SubmitLoanApplication.Add("loan_amount", "1000");
SubmitLoanApplication.Add("loan_type", "3 months");
AppsFlyer.trackRichEvent("submit_loan_application", SubmitLoanApplication);
대출 승인
이벤트 이름: loan_accepted
목적
대출 승인 이벤트 기록을 통해, 대출 트렌드 및 다른 지표를 알 수 있습니다.
- 어떤 유형의 대출이 승인되는지 알 수 있습니다.
- 승인된 대출 신청 금액을 알 수 있습니다.
- 대출 유형, 금액 그리고 가장 많은 대출을 승인하는 대출 제공자를 알 수 있습니다.
트리거 로직
대출이 승인되었을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
loan_id | string | 1735102 | 대출 ID |
loan_amount | float | 1000 | 요청 금액 |
loan_type | string | 3 months | 대출 기간 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("loan_id", "1735102");
eventValue.put("loam_amount", 1000);
eventValue.put("loan_type", "3 months");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),"loan_accepted" , eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:@"loan_accepted"
withValues: @{
@"loan_id": @"1735102",
@"loan_amount": @1000,
@"loan_type": @"3 months"
}];
AppsFlyerTracker.shared().logEvent("loan_accepted",
withValues: [
"loan_id": "1735102",
"loan_amount": 1000,
"loan_type": "3 months"
]);
Dictionary<string, string> LoanAccepted = new Dictionary<string, string>();
LoanAccepted.Add("loan_id", "1735102");
LoanAccepted.Add("loan_amount", "1000");
LoanAccepted.Add("loan_type", "3 months");
AppsFlyer.trackRichEvent("loan_accepted", LoanAccepted);
대출 거절
이벤트 이름: loan_rejected
목적
대출 거절 이벤트를 기록함으로써, 대출 거절 이유들에 대해 이해하는데 도움이 됩니다. 금액, 대출 기간, 거절율 사이의 상관 관계를 알 수 있습니다. 대출 승인이 거절된 사용자에게 더 적은 금액 대출을 제안하는 리타겟팅을 할 수 있습니다.
트리거 로직
대출 제공자가 대출을 거절했을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
load_id | string | 1735102 | 대출 ID |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("loan_id", "1735102");
eventValue.put("loam_amount", 1000);
eventValue.put("loan_type", "3 months");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),loan_rejected" , eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:@"loan_rejected"
withValues: @{
@"loan_id": @"1735102",
@"loan_amount": @1000,
@"loan_type": @"3 months"
}];
AppsFlyerTracker.shared().logEvent("loan_rejected", withValues: [
"loan_id": "1735102",
"loan_amount": 1000,
"loan_type": "3 months"
]);
Dictionary<string, string> LoanRejected = new Dictionary<string, string>();
LoanRejected.Add("loan_id", "1735102");
LoanRejected.Add("loan_amount", "1000");
LoanRejected.Add("loan_type", "3 months");
AppsFlyer.trackRichEvent("loan_rejected", LoanRejected);
상환
이벤트 이름: payment
목적
상환 이벤트 기록을 통해 차용인의 신용도를 측정할 수 있습니다. 신용도가 높은 차용인은 대출 상환 의무를 잘 이행하는 사람입니다. 차용인을 유입 캠페인에 어트리뷰트하고, 어떤 캠페인이 신용도 높은 차용인을 생성하는지 알 수 있습니다. 또한 이 이벤트를 기록함으로써, 최소, 최대, 평균 상환 금액에 대한 데이터를 모을 수 있습니다.
트리거 로직
사용자가 대출금을 상환했을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
loan_id | string | 1735102 | 대출 ID |
payment_amount | float | 100 | 상환 금액 |
payment_id | string | AE12SF | 상환 ID |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("loan_id", "1735102");
eventValue.put("payment_amount", 100);
eventValue.put("payment_id", "AE12SF");
AppsFlyerLib.getInstance().logEvent(
getApplicationContext(),
"payment" , eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:@"payment"
withValues: @{
@"loan_id": @"1735102",
@"payment_amount": @100,
@"payment_id": @"AE12SF"
}];
AppsFlyerTracker.shared().logEvent("payment",
withValues: [
"loan_id": "1735102",
"payment_amount": 100,
"payment_id": "AE12SF"
]);
Dictionary<string, string> Payment = new Dictionary<string, string>();
Payment.Add("loan_id", "1735102");
Payment.Add("payment_amount", "100");
Payment.Add("payment_id", "AE12SF");
AppsFlyer.trackRichEvent("payment", Payment);
상환 완료
이벤트 이름: payment_completed
목적
상환 완료 이벤트를 기록함으로써 대출 상환 의무를 이행한 차용인을 강조하는데 도움이 됩니다. 이러한 차용인에게 더 낮은 이자 수수료나 다른 프로모션을 제시하는 등의 리타겟팅을 할 수 있습니다.
트리거 로직
대출이 완전 상환되었을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
loan_id | string | 1735102 | 대출 ID |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("loan_id", "1735102");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),"payment_completed" , eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:@"payment_completed"
withValues: @{
@"loan_id": @"1735102"
}];
AppsFlyerTracker.shared().logEvent("payment_completed",
withValues: [
"loan_id": "1735102"
]);
Dictionary<string, string> PaymentCompleted = new Dictionary<string, string>();
PaymentCompleted.Add("loan_id", "1735102");
AppsFlyer.trackRichEvent("payment_completed", PaymentCompleted);
교통 - 차량 공유 앱
차량 공유는 최근에 점점 더 인기를 얻고 있습니다. 특히 많은 사람들이 차를 소유하지 않는 도심 지역에서 더욱 인기입니다. 인앱 이벤트를 기록하고 분석함으로써 다음과 같은 많은 것을 알 수 있습니다.
- 승객과 운전사가 어떻게 서로 소통하는 지를 알 수 있습니다.
- 차량 공유 서비스를 더 많이 이용하는 국가를 알 수 있습니다.
- 요금, 탑승 횟수, 탑승 거리 등의 지표.
등록 완료
이벤트 이름: af_complete_registration
목적
등록 완료 이벤트 기록을 통해 사용자에 대한 인사이트를 얻을 수 있습니다. 또한 등록 완료 이벤트 기록을 통해 다음을 기록할 수 있습니다.
- 사용자가 선호하는 가입 방법을 알 수 있습니다(구글, 페이스북, 이메일).
- 앱을 다운로드하고 설치한 후에 얼마나 많은 사용자가 가입하는지 알 수 있습니다.
- 앱을 가장 많이 이용하는 사용자가 속한 국가를 파악하여 국가 전반의 등록 트렌드를 알 수 있습니다.
트리거 로직
사용자가 성공적으로 가입했을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_registration_method | string | 사용자가 가입하는 방법 또는 플랫폼 | |
country_code | string | 66 | 국가 코드(전화 코드) |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REGSITRATION_METHOD, "shoes");
eventValue.put("country_code", "66");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.COMPLETE_REGISTRATION, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventCompleteRegistration
withValues: @{
AFEventParamRegistrationMethod: @"Facebook",
@"country_code": @"66",
}];
AppsFlyerTracker.shared().logEvent(AFEventCompleteRegistration,
withValues: [
AFEventParamRegistrationMethod: "Facebook",
"country_code": "66"
]);
Dictionary<string, string> CompleteRegistrationEvent = new Dictionary<string, string>();
CompleteRegistrationEvent.Add("af_registration_method", "Facebook");
CompleteRegistrationEvent.Add("country_code", "66");
AppsFlyer.trackRichEvent("af_complete_registration", CompleteRegistrationEvent);
결제 정보 추가
이벤트 이름: af_add_payment_info
목적
결제 정보 추가 이벤트 기록을 통해 사용자를 분류할 수 있습니다. 다음을 할 수 있습니다.
- 사용자가 결제 정보를 추가하는데 얼마나 걸리는지 알 수 있습니다.
- 가장 선호하는 결제 수단 (신용카드, 전자 지갑).
- 많이 사용되는 결제 수단의 제공업체와 캠페인을 설정하여 협업할 수 있습니다.
트리거 로직
사용자가 계정에 결제 정보를 성공적으로 추가했을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_success | boolean | true | 결제 수단 추가 성공 여부 |
credit_card_type | string | Visa, Mastercard | 신용카드 유형(옵션) |
payment_method_type | string | 신용카드, 전자 지갑 | 결제 수단 유형 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.SUCCESS, true);
eventValue.put("credit_card_type", "Visa");
eventValue.put("payment_method_type", true);
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.ADD_PAYMENT_INFO, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventAddPaymentInfo
withValues: @{
AFEventParamSuccess: @TRUE,
@"credit_card_type": @"Visa",
@"payment_method_type": @"credit card"
}];
AppsFlyerTracker.shared().logEvent(AFEventAddPaymentInfo, withValues: [
AFEventParamSuccess: true,
"credit_card_type": "Visa",
"payment_method_type": "credit card"
]);
Dictionary<string, string> AddPaymentInfoEvent = new Dictionary<string, string>();
AddPaymentInfoEvent.Add("af_success", "true");
AddPaymentInfoEvent.Add("credit_card_type", "Visa");
AddPaymentInfoEvent.Add("payment_method_type", "credit card");
AppsFlyer.trackRichEvent("af_add_payment_info", AddPaymentInfoEvent);
탑승 예약 요청
이벤트 이름: ride_booking_requested
목적
탑승 예약 요청 이벤트는 탑승 예약 관련 4가지 이벤트 중 하나입니다. 나머지 이벤트에 대해서는 아래에서 설명합니다. 이 이벤트 기록을 통해 다음을 할 수 있습니다.
- 인기 목적지를 알 수 있습니다.
- 사람들이 어디에서 어디로 가는지 트렌드를 알 수 있습니다.
- 평균 탑승 거리를 알 수 있습니다.
- 가장 많은 사용자가 있는 도시, 지역, 국가를 알 수 있습니다.
추가로, 다른 세가지 예약 관련 이벤트와 함께 이 이벤트를 기록함으로써 성공한 건을 기록할 수 있습니다. 성공한 건을 기록하여 성공하지 못한 건과 비교할 수 있습니다. 예를 들어, 얼마나 많은 예약이 요청되었고, 얼마나 많은 탑승 예약이 완료되었거나 취소되었는지를 알 수 있습니다.
트리거 로직
승객이 탑승 예약 요청을 했을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_price | float | 22.4 | 탑승 견적 가격 |
af_currency | string | SGD | 통화 |
af_destination_a | string | Plaza Singapura | 출발지 |
af_destination_b | string | Marina Bay Sands | 도착지 |
distance | float | 5.2 | 두 목적지 사이의 거리 |
af_content_type | string | Taxi | 운송 유형 |
payment_method_type | string | 신용카드, 전자 지갑 | 결제 수단 유형 |
af_city | string | 싱가포르 | 탑승을 예약한 도시 |
af_region | string | SFA | 탑승을 예약한 지역 |
af_country | string | 싱가포르 | 탑승을 예약한 국가 |
order_id | string | 135790 | 주문 ID |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 22.4);
eventValue.put(AFInAppEventParameterName.CURRENCY, "SGD");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "Plaza Singapura");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "Marina Bay Sands");
eventValue.put("distance", 5.2);
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "Taxi");
eventValue.put("payment_method_type", "credit card");
eventValue.put("notes", "Taxi stand");
eventValue.put(AFInAppEventParameterName.CITY, "Singapore");
eventValue.put(AFInAppEventParameterName.REGION, "SFA");
eventValue.put(AFInAppEventParameterName.COUNTRY, "Singapore");
eventValue.put("af_order_id", "135790");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "ride_booking_requested", eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:@"ride_booking_requested"
withValues: @{
AFEventParamPrice: @22.4,
AFEventParamCurrency: @"SGD",
AFEventParamDestinationA: @"Plaza Singapura",
AFEventParamDestinationB: @"Marina Bay Sands",
@"distance": @5.2,
AFEventParamContentType: @"Taxi",
@"payment_method_type": @"credit card",
@"notes": @"Taxi stand",
AFEventParamCity: @"Singapore",
AFEventParamRegion: @"SFA",
AFEventParamCountry: @"Singapore",
AFEventParamOrderId: @"135790"
}];
AppsFlyerTracker.shared().logEvent("ride_booking_requested",
withValues: [
AFEventParamPrice: 22.4,
AFEventParamCurrency: "SGD",
AFEventParamDestinationA: "Plaza Singapura",
AFEventParamDestinationB: "Marina Bay Sands",
"distance": 5.2,
AFEventParamContentType: "Taxi",
"payment_method_type": "credit card",
"notes": "Taxi stand",
AFEventParamCity: "Singapore",
AFEventParamRegion: "SFA",
AFEventParamCountry: "Singapore",
AFEventParamOrderId: "135790"
]);
Dictionary<string, string> RideBookingRequestedEvent = new Dictionary<string, string>();
RideBookingRequestedEvent.Add("af_price", "22.4");
RideBookingRequestedEvent.Add("af_currency", "SGD");
RideBookingRequestedEvent.Add("af_destination_a", "Plaza Singapura");
RideBookingRequestedEvent.Add("af_destination_b", "Marina Bay Sands");
RideBookingRequestedEvent.Add("distance", "5.2");
RideBookingRequestedEvent.Add("af_content_type", "Taxi");
RideBookingRequestedEvent.Add("payment_method_type", "credit card");
RideBookingRequestedEvent.Add("notes", "Taxi stand");
RideBookingRequestedEvent.Add("af_city", "Singapore");
RideBookingRequestedEvent.Add("af_region", "SFA");
RideBookingRequestedEvent.Add("af_country", "Singapore");
RideBookingRequestedEvent.Add("af_order_id", "135790");
AppsFlyer.trackRichEvent("ride_booking_requested", RideBookingRequestedEvent);
탑승 예약 확인
이벤트 이름: ride_booking_confirmed
목적
탑승 예약 확인 이벤트는 탑승 예약 관련 네가지 이벤트 중 하나입니다. 이 이벤트 기록을 통해 다음을 할 수 있습니다.
- 가장 활발하게 활동하는 운전자가 누구인지 알 수 있습니다.
- 운전자 사이에서 공통되는 목적지를 알 수 있습니다.
- 각 운전자의 평균 및 전체 탑승 요금을 알 수 있습니다.
추가로, 다른 세가지 예약 관련 이벤트와 함께 이 이벤트를 기록하면 운전자 활동에 대해 더 잘 이해할 수 있습니다. 어느 운전자가 예약 요청을 가장 많이 확인하고, 어느 운전자가 단거리, 또는 장거리를 선택하는지 등을 알 수 있습니다.
트리거 로직
운전자가 예약을 승인했을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_price | float | 22.4 | 탑승 견적 가격 |
af_currency | string | SGD | 통화 |
af_destination_a | string | Plaza Singapura | 출발지 |
af_destination_b | string | Marina Bay Sands | 도착지 |
distance | float | 5.2 | 두 목적지 사이의 거리 |
af_content_type | string | Taxi | 운송 유형 |
driver_id | string | 1706 | 탑승을 확인한 운전자 ID |
payment_method_type | string | 신용카드, 전자 지갑 | 결제 수단 유형 |
af_city | string | 싱가포르 | 탑승을 예약한 도시 |
af_region | string | SFA | 탑승을 예약한 지역 |
af_country | string | 싱가포르 | 탑승을 예약한 국가 |
af_order_id | string | 135790 | 주문 ID |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 22.4);
eventValue.put(AFInAppEventParameterName.CURRENCY, "SGD");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "Plaza Singapura");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "Marina Bay Sands");
eventValue.put("distance", 5.2);
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "Taxi");
eventValue.put("driver_id", "1706");
eventValue.put("payment_method_type", "credit card");
eventValue.put("notes", "Taxi stand");
eventValue.put(AFInAppEventParameterName.CITY, "Singapore");
eventValue.put(AFInAppEventParameterName.REGION, "SFA");
eventValue.put(AFInAppEventParameterName.COUNTRY, "Singapore");
eventValue.put("af_order_id", "135790");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "ride_booking_confirmed", eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:@"ride_booking_confirmed"
withValues: @{
AFEventParamPrice: @22.4,
AFEventParamCurrency: @"SGD",
AFEventParamDestinationA: @"Plaza Singapura",
AFEventParamDestinationB: @"Marina Bay Sands",
@"distance": @5.2,
AFEventParamContentType: @"Taxi",
@"driver_id": @"1706",
@"payment_method_type": @"credit card",
@"notes": @"Taxi stand",
AFEventParamCity: @"Singapore",
AFEventParamRegion: @"SFA",
AFEventParamCountry: @"Singapore",
AFEventParamOrderId: @"135790"
}];
AppsFlyerTracker.shared().logEvent("ride_booking_confirmed",
withValues: [
AFEventParamPrice: 22.4,
AFEventParamCurrency: "SGD",
AFEventParamDestinationA: "Plaza Singapura",
AFEventParamDestinationB: "Marina Bay Sands",
"distance": 5.2,
AFEventParamContentType: "Taxi",
"driver_id": "1706",
"payment_method_type": "credit card",
"notes": "Taxi stand",
AFEventParamCity: "Singapore",
AFEventParamRegion: "SFA",
AFEventParamCountry: "Singapore",
AFEventParamOrderId: "135790"
]);
Dictionary<string, string> RideBookingConfirmedEvent = new Dictionary<string, string>();
RideBookingConfirmedEvent.Add("af_price", "22.4");
RideBookingConfirmedEvent.Add("af_currency", "SGD");
RideBookingConfirmedEvent.Add("af_destination_a", "Plaza Singapura");
RideBookingConfirmedEvent.Add("af_destination_b", "Marina Bay Sands");
RideBookingConfirmedEvent.Add("distance", "5.2");
RideBookingConfirmedEvent.Add("af_content_type", "Taxi");
RideBookingConfirmedEvent.Add("driver_id", "1706");
RideBookingConfirmedEvent.Add("payment_method_type", "credit card");
RideBookingConfirmedEvent.Add("notes", "Taxi stand");
RideBookingConfirmedEvent.Add("af_city", "Singapore");
RideBookingConfirmedEvent.Add("af_region", "SFA");
RideBookingConfirmedEvent.Add("af_country", "Singapore");
RideBookingConfirmedEvent.Add("af_order_id", "135790");
AppsFlyer.trackRichEvent("ride_booking_confirmed", RideBookingConfirmedEvent);
탑승 예약 취소
이벤트 이름: ride_booking_cancelled
목적
탑승 예약 취소 이벤트는 탑승 예약 관련 4가지 이벤트 중 하나입니다. 이 이벤트 기록을 통해 다음을 할 수 있습니다.
- 계속 취소하는 운전자나 승객을 기록할 수 있습니다.
- 얼마나 많은 탑승이 취소되었는지 알 수 있습니다.
- 요금, 목적지, 거리, 도시 등의 속성과 취소율의 상관 관계를 알 수 있습니다.
- 탑승 취소 이유를 알 수 있습니다.
트리거 로직
예약이 취소되었을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_price | float | 22.4 | 탑승 견적 가격 |
af_currency | string | SGD | 통화 |
af_destination_a | string | Plaza Singapura | 출발지 |
af_destination_b | string | Marina Bay Sands | 도착지 |
distance | float | 5.2 | 두 목적지 사이의 거리 |
af_content_type | string | Taxi | 운송 유형 |
driver_id | string | 1706 | 탑승을 확인한 운전자 ID |
cancelation_reason | string | 가격이 너무 비쌉니다, 운전자가 없습니다, 승객이 없습니다. | 탑승 취소 이유 |
payment_method_type | string | 신용카드, 전자 지갑 | 결제 수단 유형 |
af_city | string | 싱가포르 | 탑승을 예약한 도시 |
af_region | string | SFA | 탑승을 예약한 지역 |
af_country | string | 싱가포르 | 탑승을 예약한 국가 |
order_id | string | 135790 | 주문 ID |
canceled_by | string | Passenger | 취소 당사자가 운전자인지 승객인지 여부 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 22.4);
eventValue.put(AFInAppEventParameterName.CURRENCY, "SGD");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "Plaza Singapura");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "Marina Bay Sands");
eventValue.put("distance", 5.2);
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "Taxi");
eventValue.put("driver_id", "1706");
eventValue.put("cancellation_reason", "driver didn't show up");
eventValue.put("payment_method_type", "credit card");
eventValue.put("notes", "Taxi stand");
eventValue.put(AFInAppEventParameterName.CITY, "Singapore");
eventValue.put(AFInAppEventParameterName.REGION, "SFA");
eventValue.put(AFInAppEventParameterName.COUNTRY, "Singapore");
eventValue.put("af_order_id", "135790");
eventValue.put("canceled_by", "passenger");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "ride_booking_canceled", eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:@"ride_booking_canceled"
withValues: @{
AFEventParamPrice: @22.4,
AFEventParamCurrency: @"SGD",
AFEventParamDestinationA: @"Plaza Singapura",
AFEventParamDestinationB: @"Marina Bay Sands",
@"distance": @5.2,
AFEventParamContentType: @"Taxi",
@"driver_id": @"1706",
@"cancelation_reason": @"driver didn't show up",
@"payment_method_type": @"credit card",
@"notes": @"Taxi stand",
AFEventParamCity: @"Singapore",
AFEventParamRegion: @"SFA",
AFEventParamCountry: @"Singapore",
AFEventParamOrderId: @"135790",
@"canceled_by": @"passenger"
}];
AppsFlyerTracker.shared().logEvent("ride_booking_canceled",
withValues: [
AFEventParamPrice: 22.4,
AFEventParamCurrency: "SGD",
AFEventParamDestinationA: "Plaza Singapura",
AFEventParamDestinationB: "Marina Bay Sands",
"distance": 5.2,
AFEventParamContentType: "Taxi",
"driver_id": "1706",
"cancelation_reason": "driver didn't show up",
"payment_method_type": "credit card",
"notes": "Taxi stand",
AFEventParamCity: "Singapore",
AFEventParamRegion: "SFA",
AFEventParamCountry: "Singapore",
AFEventParamOrderId: "135790",
"canceled_by": "passenger"
]);
Dictionary<string, string> RideBookingCanceledEvent = new Dictionary<string, string>();
RideBookingCanceledEvent.Add("af_price", "22.4");
RideBookingCanceledEvent.Add("af_currency", "SGD");
RideBookingCanceledEvent.Add("af_destination_a", "Plaza Singapura");
RideBookingCanceledEvent.Add("af_destination_b", "Marina Bay Sands");
RideBookingCanceledEvent.Add("distance", "5.2");
RideBookingCanceledEvent.Add("af_content_type", "Taxi");
RideBookingCanceledEvent.Add("driver_id", "1706");
RideBookingCanceledEvent.Add("cancelation_reason", "driver didn't show up");
RideBookingCanceledEvent.Add("payment_method_type", "credit card");
RideBookingCanceledEvent.Add("notes", "Taxi stand");
RideBookingCanceledEvent.Add("af_city", "Singapore");
RideBookingCanceledEvent.Add("af_region", "SFA");
RideBookingCanceledEvent.Add("af_country", "Singapore");
RideBookingCanceledEvent.Add("af_order_id", "135790");
RideBookingCanceledEvent.Add("canceled_by", "passenger");
AppsFlyer.trackRichEvent("ride_booking_cancelled", RideBookingCanceledEvent);
탑승 예약 완료
이벤트 이름: ride_booking_completed
목적
탑승 예약 완료 이벤트는 탑승 예약 관련 4가지 이벤트 중 하나입니다. 이 이벤트 기록을 통해 다음을 할 수 있습니다.
- 승객의 지출 내역 및 운전자의 수입 내역을 알 수 있습니다.
- 목적지, 거리, 결제 수단, 운전자 ID 등의 속성과 탑승 완료와의 상관 관계를 알 수 있습니다.
- 운전자 및 승객의 평균 및 전체 탑승 거리를 알 수 있습니다.
- 완료된 탑승과 취소된 탑승을 비교할 수 있습니다.
- 운전자 평가 점수를 기록하고 기록할 수 있습니다.
트리거 로직
운행이 종료되었을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_price | float | 22.4 | 탑승 견적 가격 |
af_currency | string | SGD | 통화 |
af_destination_a | string | Plaza Singapura | 출발지 |
af_destination_b | string | Marina Bay Sands | 도착지 |
distance | float | 5.2 | 두 목적지 사이의 거리 |
af_content_type | string | Taxi | 운송 유형 |
driver_id | string | 1706 | 탑승을 확인한 운전자 ID |
payment_method_type | string | 신용카드, 전자 지갑 | 결제 수단 유형 |
af_city | string | 싱가포르 | 탑승을 예약한 도시 |
af_region | string | SFA | 탑승을 예약한 지역 |
af_country | string | 싱가포르 | 탑승을 예약한 국가 |
order_id | string | 135790 | 주문 ID |
credits_earned | int | 248 | 탑승을 완료할 때 승객이 받는 크레딧 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 22.4);
eventValue.put(AFInAppEventParameterName.CURRENCY, "SGD");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "Plaza Singapura");
eventValue.put(AFInAppEventParameterName.DESTINATION_B,"Marina Bay Sands");
eventValue.put("distance", 5.2);
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "Taxi");
eventValue.put("driver_id", "1706");
eventValue.put("payment_method_type", "credit card");
eventValue.put("notes", "Taxi stand");
eventValue.put(AFInAppEventParameterName.CITY, "Singapore");
eventValue.put(AFInAppEventParameterName.REGION, "SFA");
eventValue.put(AFInAppEventParameterName.COUNTRY, "Singapore");
eventValue.put("af_order_id", "135790");
eventValue.put("credits_earned", 248);
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "ride_booking_completed" , eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:@"ride_booking_completed"
withValues: @{
AFEventParamPrice: @22.4,
AFEventParamCurrency: @"SGD",
AFEventParamDestinationA: @"Plaza Singapura",
AFEventParamDestinationB: @"Marina Bay Sands",
@"distance": @5.2,
AFEventParamContentType: @"Taxi",
@"driver_id": @"1706",
@"payment_method_type": @"credit card",
@"notes": @"Taxi stand",
AFEventParamCity: @"Singapore",
AFEventParamRegion: @"SFA",
AFEventParamCountry: @"Singapore",
AFEventParamOrderId: @"135790",
@"credits_earned": @248
}];
AppsFlyerTracker.shared().logEvent("ride_booking_completed",
withValues: [
AFEventParamPrice: 22.4,
AFEventParamCurrency: "SGD",
AFEventParamDestinationA: "Plaza Singapura",
AFEventParamDestinationB: "Marina Bay Sands",
distance": 5.2,
AFEventParamContentType: "Taxi",
"driver_id": "1706",
"payment_method_type": "credit card",
"notes": "Taxi stand",
AFEventParamCity: "Singapore",
AFEventParamRegion: "SFA",
AFEventParamCountry: "Singapore",
AFEventParamOrderId: "135790",
"credits_earned": 248
]);
Dictionary<string, string> RideBookingCompletedEvent = new Dictionary<string, string>();
RideBookingCompletedEvent.Add("af_price", "22.4");
RideBookingCompletedEvent.Add("af_currency", "SGD");
RideBookingCompletedEvent.Add("af_destination_a", "Plaza Singapura");
RideBookingCompletedEvent.Add("af_destination_b", "Marina Bay Sands");
RideBookingCompletedEvent.Add("distance", "5.2");
RideBookingCompletedEvent.Add("af_content_type", "Taxi");
RideBookingCompletedEvent.Add("driver_id", "1706");
RideBookingCompletedEvent.Add("payment_method_type", "credit card");
RideBookingCompletedEvent.Add("notes", "Taxi stand");
RideBookingCompletedEvent.Add("af_city", "Singapore");
RideBookingCompletedEvent.Add("af_region", "SFA");
RideBookingCompletedEvent.Add("af_country", "Singapore");
RideBookingCompletedEvent.Add("af_order_id", "135790");
AppsFlyer.trackRichEvent("ride_booking_completed", RideBookingCompletedEvent);
크레딧 사용
이벤트 이름: spent_credits
목적
위에서 언급한 탑승 예약 완료 이벤트는 크레딧 얻기(credits_earned) 속성을 가지고 있습니다. 이 속성은 탑승할 때마다 승객이 받는 크레딧을 기록합니다. 승객은 이 크레딧을 바우처나 요금 할인으로 교환할 수 있습니다. 이 이벤트 기록을 통해 다음을 할 수 있습니다.
- 얼마나 많은 승객이 크레딧을 바우처로 교환했는지 알 수 있습니다.
- 승객이 선호하는 바우처나 요금 할인은 어떤 것인지 알 수 있습니다.
트리거 로직
승객이 크레딧을 소비할 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_content | string | Single Movie Ticket | 바우처 또는 할인 유형 |
credits_used | int | 1000 | 사용한 크레딧 |
credits_remaining | int | 2090 | 계정에 남은 크레딧 |
invoice_id | string | KO215123SD | 크레딧 사용으로 생성된 청구서 ID |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT, "Single movie ticket");
eventValue.put("credits_used", 1000);
eventValue.put("invoice_id", "");
eventValue.put("credits_remaining", "KO215123SD");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "spent_credits" , eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:@"spent_credits"
withValues: @{
AFEventParamContent: @"Single movie ticket",
@"credits_used": @1000,
@"credits_remaining": @2090,
@"invoice_id": @"KO215123SD"
}];
AppsFlyerTracker.shared().logEvent("spent_credits",
withValues: [
AFEventParamContent: "Single movie ticket",
"credits_used": 1000,
"credits_remaining": 2090,
"invoice_id": "KO215123SD"
]);
Dictionary<string, string> CreditsSpent = new Dictionary<string, string>();
CreditsSpent.Add("af_content", "Single movie ticket");
CreditsSpent.Add("credits_used", "1000");
CreditsSpent.Add("credits_remaining", "2090");
CreditsSpent.Add("invoice_id", "KO215123SD");
AppsFlyer.trackRichEvent("af_content_view", CreditsSpent);
여행 - 항공권 예약
여행자는 항공권 예약 앱으로 가장 좋은 조건이 제시된 항공권을 쉽게 예약할 수 있습니다. 기록을 권장하는 이벤트는 항공권 예약, 항공권 검색, 그리고 할인 행사 열람입니다. 이 이벤트 기록을 통해 사용자 선호도와 구매 행동을 분석할 수 있습니다. 이벤트 데이터를 분석하여 예를 들어 다음을 할 수 있습니다.
- 인기 목적지를 알 수 있습니다.
- 계절별 트렌드 분석을 할 수 있습니다.
- 사용자가 여행할 때 선호하는 인기 항공사를 알 수 있습니다.
여행 예약
이벤트 이름: af_travel_booking
목적
항공권 예약은 앱의 핵심 기능입니다. 이 이벤트와 관련된 속성을 모두 기록함으로써 다음 인사이트를 얻을 수 있습니다.
- 인기 목적지
- 인기 항공사
- 계절별 트렌드
트리거 로직
사용자가 항공권 예약을 성공적으로 마치고 예약 확인 페이지를 방문했을 때 이벤트를 전송합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_revenue | float | 647 | 예약과 연결된 수익 |
af_currency | string | SGD | 통화 코드 |
af_price | float | 674 | 가격 |
af_content_id | string | ODIRNH | 제시된 항공권 ID |
af_departing_departure_date | string | 2018-06-21 | 출발일 |
af_returning_departure_date | string | 2018-06-26 | 도착일 |
af_destination_a | string | BKK | 첫 번째 목적지 |
af_destination_b | string | SYD | 두 번째 목적지(해당할 경우) |
airline_code | string | KLM | 항공사 코드 |
af_class | string | economy | 예약 항공권 클래스 |
purchase_method | string | credit card | 신용카드, PayPal 등 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REVENUE, 647);
eventValue.put(AFInAppEventParameterName.CURRENCY, "SGD");
eventValue.put(AFInAppEventParameterName.PRICE, 674);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "ODIRNH");
eventValue.put(AFInAppEventParameterName.DEPARTING_DEPARTURE_DATE, "2018-06-21");
eventValue.put(AFInAppEventParameterName.RETURNING_DEPARTURE_DATE, "2018-06-26");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "BKK");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "SYD");
eventValue.put("airline_code", "KLM");
eventValue.put(AFInAppEventParameterName.CLASS, "economy");
eventValue.put("purchase_method", "credit card");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.TRAVEL_BOOKING, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventTravelBooking
withValues: @{
AFEventParamRevenue: @647,
AFEventParamCurrency: @"SGD",
AFEventParamPrice: @674,
AFEventParamContentId: @"ODIRNH",
AFEventParamDepartingDepartureDate: @"2018-21-06",
AFEventParamReturningDepartureDate: @"2018-26-06",
AFEventParamDestinationA: @"BKK",
AFEventParamDestinationB: @"SYD",
@"airline_code": @"KLM",
AFEventParamClass: @"economy",
@"purchase_method": @"credit card"
}];
AppsFlyerTracker.shared().logEvent(AFEventTravelBooking,
withValues: [
AFEventParamRevenue: 647,
AFEventParamCurrency: "SGD",
AFEventParamPrice: 674,
AFEventParamContentId: "ODIRNH",
AFEventParamDepartingDepartureDate: "2018-21-06",
AFEventParamReturningDepartureDate: "2018-26-06",
AFEventParamDestinationA: "BKK",
AFEventParamDestinationB: "SYD",
"airline_code": "KLM",
AFEventParamClass: "economy",
"purchase_method": "credit card"
]);
Dictionary<string, string> TravelBookingEvent = new Dictionary<string, string>();
TravelBookingEvent.Add("af_revenue", "647");
TravelBookingEvent.Add("af_currency", "SGD");
TravelBookingEvent.Add("af_price", "974");
TravelBookingEvent.Add("af_content_id", "ODIRNH");
TravelBookingEvent.Add("af_departing_departure_date", "2018-06-21");
TravelBookingEvent.Add("af_returning_departure_date", "2018-06-26");
TravelBookingEvent.Add("af_destination_a", "BKK");
TravelBookingEvent.Add("af_destination_b", "SYD");
TravelBookingEvent.Add("airline_code", "KLM");
TravelBookingEvent.Add("af_class", "economy");
TravelBookingEvent.Add("purchase_method", "credit card");
AppsFlyer.trackRichEvent ("af_travel_booking", TravelBookingEvent);
콘텐츠 보기
이벤트 이름: af_content_view
목적
검색을 마치면, 사용자는 그들이 판단하기에 관련성이 높은 검색 결과를 클릭합니다. 사용자가 검색 결과에서 열람하는 콘텐츠 기록을 통해 다음을 할 수 있습니다.
- 사용자의 관심이 가장 많은 항공권 제시 조건을 알 수 있습니다.
- 검색 결과와 검색어가 연관있는지 여부를 알 수 있습니다.
트리거 로직
사용자가 검색 결과를 클릭할 때 이 이벤트를 트리거하는 것이 가장 좋습니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_departing_departure_date | string | 2018-06-21 | 출발일 |
af_returning_departure_date | string | 2018-06-26 | 도착일 |
af_destination_a | string | BKK | 첫 번째 목적지 |
af_destination_b | string | SYD | 두 번째 목적지(해당할 경우) |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.DEPARTING_DEPARTURE_DATE, "2018-06-21");
eventValue.put(AFInAppEventParameterName.RETURNING_DEPARTURE_DATE, "2018-06-26");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "BKK");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "SYD");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.CONTENT_VIEW, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventContentView
withValues: @{
AFEventParamDepartingDepartureDate: @"2018-21-06",
AFEventParamReturningDepartureDate: @"2018-26-06",
AFEventParamDestinationA: @"BKK",
AFEventParamDestinationB: @"SYD"
}];
AppsFlyerTracker.shared().logEvent(AFEventContentView, withValues: [
AFEventParamDepartingDepartureDate: "2018-21-06",
AFEventParamReturningDepartureDate: "2018-26-06",
AFEventParamDestinationA: "BKK",
AFEventParamDestinationA: "SYD"
]);
Dictionary<string, string> ContentViewEvent = new Dictionary<string, string>();
ContentViewEvent.Add("af_departing_departure_date", "2018-06-21");
ContentViewEvent.Add("af_returning_departure_date", "2018-06-26");
ContentViewEvent.Add("af_destination_a", "BKK");
ContentViewEvent.Add("af_destination_b", "SYD");
AppsFlyer.trackRichEvent ("af_content_view", ContentViewEvent);
검색
이벤트 이름: af_search
목적
사용자는 항공권 예약 앱에서 항공권과 특가 상품을 검색합니다. 사용자 선호도에 대한 인사이트를 얻는 가장 좋은 방법은 검색 파라미터를 기록하는 것입니다. 검색 이벤트와 관련 속성을 기록함으로써 다음을 할 수 있습니다.
- 사용자가 가장 많이 검색하는 것이 무엇인지 알 수 있습니다.
- 가장 인기있는 목적지가 어디인지 알 수 있습니다.
- 얼마나 많은 사용자가 어린이와 함께 여행하는지 알 수 있습니다.
- 일 년 중 언제 사용자가 여행을 계획하고, 여행을 하고 싶어 하는지를 알 수 있습니다.
트리거 로직
검색 양식을 채워넣은 후, 사용자가 검색 버튼을 클릭했을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_num_children | int | 0 | 어린이 여행자 인원수 |
af_destination_a | string | BKK | 첫 번째 목적지 |
af_destination_b | string | SYD | 두 번째 목적지(해당할 경우) |
af_departing_departure_date | string | 2018-06-21 | 출발일 |
af_returning_departure_date | string | 2018-06-26 | 도착일 |
af_num_infants | int | 0 | 유아 여행자 인원수 |
af_num_adults | int | 1 | 성인 여행자 인원수 |
코드 예
Map<String, Object> eventValue = new HashMap<String,
eventValue.put(AFInAppEventParameterName.NUM_CHILDREN, 0);
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "BKK");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "SYD");
eventValue.put(AFInAppEventParameterName.DEPARTING_DEPARTURE_DATE, "2018-06-21");
eventValue.put(AFInAppEventParameterName.RETURNING_DEPARTURE_DATE, "2018-06-26");
eventValue.put(AFInAppEventParameterName.NUM_INFANTS, 0);
eventValue.put(AFInAppEventParameterName.NUM_ADULTS, 1);
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.SEARCH, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventSearch
withValues: @{
AFEventParamNumChildren: @0,
AFEventParamDestinationA: @"BKK",
AFEventParamDestinationB: @"SYD",
AFEventParamDepartingDepartureDate: @"2018-21-06",
AFEventParamReturningDepartureDate: @"2018-26-06",
AFEventParamNumInfants: @0,
AFEventParamNumAdults: @1
}];
AppsFlyerTracker.shared().logEvent(AFEventSearch, withValues: [
AFEventParamNumChildren: 0,
AFEventParamDestinationA: "BKK",
AFEventParamDestinationB: "SYD",
AFEventParamDepartingDepartureDate: "2018-21-06",
AFEventParamReturningDepartureDate: "2018-26-06",
AFEventParamNumInfants: 0,
AFEventParamNumAdults: 1
]);
Dictionary<string, string> SearchEvent = new Dictionary<string, string>();
SearchEvent.Add("af_num_children", "0");
SearchEvent.Add("af_destination_a", "BKK");
SearchEvent.Add("af_destination_b", "SYD");
SearchEvent.Add("af_departing_departure_date", "2018-06-21");
SearchEvent.Add("af_returning_departure_date", "2018-06-26");
SearchEvent.Add("af_num_infants", "0");
SearchEvent.Add("af_num_adults", "0");
AppsFlyer.trackRichEvent ("af_search", SearchEvent);
결제 정보 추가
이벤트 이름: af_add_payment_info
목적
이 이벤트를 통해 항공권 예약 시에 결제 정보 추가 시도의 성공 여부를 기록할 수 있습니다.
트리거 로직
사용자가 항공권 예약 버튼을 클릭했을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_success | boolean | true | 결제 수단 추가 성공 여부 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.SUCCESS, true);
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.ADD_PAYMENT_INFO, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventAddPaymentInfo
withValues: @{
AFEventParamSuccess: @TRUE
}];
AppsFlyerTracker.shared().logEvent(AFEventAddPaymentInfo,
withValues: [
AFEventParamSuccess: true
]);
Dictionary<string, string> AddPaymentInfoEvent = new Dictionary<string, string>();
AddPaymentInfoEvent.Add("af_success", "true");
AppsFlyer.trackRichEvent ("af_add_payment_info", AddPaymentInfoEvent);
첫 구매
이벤트 이름: first_purchase
목적
이 이벤트는 구매 이벤트와 같습니다. 하지만, 구매 이벤트와는 다르게, 첫 구매 이벤트는 다음 용도로 사용할 수 있습니다.
- 새 구매자가 구매까지 얼마나 걸리는지 알 수 있습니다.
- 처음으로 구매하는 사용자는 어떤 제품을 구매하는지 알 수 있습니다.
- 첫 구매의 평균 가격 및 수익을 알 수 있습니다.
트리거 로직
사용자가 첫 번째 구매를 완료했을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_revenue | float | 1200 | 구매 수익 |
af_price | float | 4000 | 전체 구매액 |
af_content_id | string | 121, 262 | 아이템 ID |
af_content_type | string | flight | 아이템 카테고리 |
af_currency | string | AUD | 통화 |
af_quantity | int | 1 | 장바구니에 담긴 아이템 개수 |
af_order_id | string | X123ABC | 구매한 다음에 발생한 주문 ID |
af_receipt_id | string | X123ABC | 크리테오 및 구글 애드워즈 리타겟팅 연동에 필요한 주문 ID |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 350);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "221");
// for multiple product categories, set the param value as: new String {"221", "124"}
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "flight");
// for multiple product categories set the param value as: new String {"flight", "meal"}
eventValue.put(AFInAppEventParameteName.CURRENCY, "USD");
eventValue.put(AFInAppEventParameterName.QUANTITY, 2);
// for multiple product categories, set the param value as: new int {1}
eventValue.put(AFInAppEventParameterName.RECEIPT_ID, "X123ABC");
eventValue.put("af_order_id", "X123ABC");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "first_purchase", eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:("first_purchase")
withValues: @{
AFEventParamRevenue: @1200,
AFEventParamPrice: @4000,
AFEventParamContentId: @"221",
// for multiple product categories, set the param value as: @[@"221", @"124"]
AFEventParamContentType: @"shirt",
// for multiple product categories, set the param value as: @[@"flight" , @"meal"]
AFEventParamCurrency: @"USD",
AFEventParamQuantity: @2,
// for multiple product categories, set the param value as: @[@1]
AFEventParamOrderId: @"X123ABC",
AFEventParamReceiptId: @"X123ABC"
}];
AppsFlyerTracker.shared().logEvent("first_purchase", withValues: [
AFEventParamRevenue: 1200,
AFEventParamPrice: 4000,
AFEventParamContentId: "221",
// for multiple product categories, set the param value as: ["221", "124"]
AFEventParamContentType: "shirt",
// for multiple product categories, set the param value as: ["flight", "meal"]
AFEventParamCurrency: "USD",
AFEventParamQuantity: 2,
// for multiple product categories, set the param value as: // [1]
AFEventParamOrderId: "X123ABC",
AFEventParamReceiptId: "X123ABC"
]);
Dictionary<string, string> FirstPurchaseEvent = new Dictionary<string, string>();
FirstPurchaseEvent.Add("af_revenue", "1200");
FirstPurchaseEvent.Add("af_price", "4000");
FirstPurchaseEvent.Add("af_content_id", "121");
// for multiple product categories, set the param value as: ["221", "124"]
FirstPurchaseEvent.Add("af_content_type", "shoes");
// for multiple product categories, set the param value as: ["flight", "meal"]
FirstPurchaseEvent.Add("af_currency", "USD");
FirstPurchaseEvent.Add("af_quantity", "2");
// for multiple product categories, set the param value as: [1]
FirstPurchaseEvent.Add("af_order_id", "X123ABC");
FirstPurchaseEvent.Add("af_receipt_id", "X123ABC");
AppsFlyer.trackRichEvent ("first_purchase", FirstPurchaseEvent);
여행 - 호텔 예약
호텔 예약 앱에서의 인앱 이벤트 기록을 통해, 어떤 캠페인과 미디어소스가 사용자를 예약까지 유도했는지 알 수 있습니다. 또한, 가장 많은 예약 건수와 수익을 올린 캠페인과 미디어소스가 무엇인지도 알 수 있습니다. 특정 미디어 소스에서 온 사용자에게 호텔 점수, 계절, 국가 및 어린이 수와 같은 기본 환경 설정을 지정할 수 있습니다. 미디어 소스에 사용자 선호 조건을 어트리뷰션 설정하여 사용자 선호 조건을 타게팅함으로써, 미디어 소스 별 캠페인을 최적화 할 수 있습니다.
등록 완료
이벤트 이름: af_complete_registration
목적
사용자 등록을 기록하고, 다른 데이터와 비교하여 사용자에 대해 더 자세히 이해할 수 있습니다. 사용자 등록 이벤트 기록을 통해 다음을 할 수 있습니다.
- 앱을 설치했지만 가입하지 않은 사용자가 얼마나 되는지 알 수 있습니다.
- 사용자가 선호하는 가입 방법이 무엇인지 알 수 있습니다.
- 어떤 미디어소스가 사용자의 가입을 유도했는지 알 수 있습니다.
트리거 로직
이 이벤트를 기록하는 가장 좋은 방법은, 사용자가 가입 절차를 완료했을 때 이벤트를 트리거하는 것입니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_registration_method | string | 이메일, 페이스북 | 가입 방법 유형 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REGSITRATION_METHOD, "Facebook");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.COMPLETE_REGISTRATION, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventCompleteRegistration
withValues: @{
AFEventParamRegistrationMethod: @"Facebook"
}];
AppsFlyerTracker.shared().logEvent(AFEventCompleteRegistration,
withValues: [
AFEventParamRegistrationMethod: "Facebook"
]);
Dictionary<string, string> CompletedRegistrationEvent = new Dictionary<string, string>();
CompletedRegistrationEvent.Add("af_registration_method", "Facebook");
AppsFlyer.trackRichEvent ("af_complete_registration", CompletedRegistrationEvent);
로그인
이벤트 이름: af_login
목적
이 이벤트를 사용하면 등록 사용자의 잔존율을 기록할 수 있습니다.
트리거 로직
사용자가 앱에 로그인하거나 앱을 열었을 때 이벤트를 트리거합니다.
권장 속성
이 이벤트는 추가 속성 없이 전송될 수 있습니다.
코드 예
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),
AFInAppEventType.LOGIN, null);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventLogin
withValues: nil
];
AppsFlyerTracker.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.trackRichEvent ("af_login", null);
검색
이벤트 이름: af_search
목적
이 이벤트의 목적은 사용자가 무엇을 검색하지 파악하는 것입니다. 사용자가 무엇을 검색하는지 알게되면 더 나은 특가 상품과 프로모션을 제시할 수 있습니다. 또한, 특정 지역의 사용자가 무엇을 검색하는지를 파악하고 미디어소스를 통해 타게팅할 수도 있습니다.
트리거 로직
사용자가 검색을 수행할 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_date_a | string | 2018/07/26 | 체크인 날짜 |
af_date_b | string | 2018/08/01 | 체크아웃 날짜 |
af_destination_a | string | 런던 | 사용자 위치 |
af_destination_b | string | Madrid | 호텔 위치 |
af_num_adults | float | 2 | 숙박 인원수 |
af_num_children | float | 0 | 어린이 인원수 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.DATE_A, "2018/07/26");
eventValue.put(AFInAppEventParameterName.DATE_B, "2018/08/01");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "London");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "Madrid");
eventValue.put(AFInAppEventParameterName.NUM_ADULTS, 2);
eventValue.put(AFInAppEventParameterName.NUM_CHILDREN, 0);
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.SEARCH, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventSearch
withValues: @{
AFEventParamDateA: @"2018/07/26",
AFEventParamDateB: @"2018/08/01",
AFEventParamDestinationA: @"London",
AFEventParamDestinationB: @"Madrid",
AFEventParamNumAdults: @2,
AFEventParamNumChildren: @0
}];
AppsFlyerTracker.shared().logEvent(AFEventSearch, withValues: [
AFEventParamDateA: "2018/07/26",
AFEventParamDateB: "2018/08/01",
AFEventParamDestinationA: "London",
AFEventParamDestinationB: "Madrid",
AFEventParamNumAdults: 2,
AFEventParamNumChildren: 0
]);
Dictionary<string, string> Search =
new Dictionary<string, string>();
Search.Add("af_date_a", "2018/07/26");
Search.Add("af_date_b", "2018/08/01");
Search.Add("af_destination_a", "London");
Search.Add("af_destination_b", "Madrid");
Search.Add("af_num_adults", "2");
Search.Add("af_num_children", "0");
AppsFlyer.trackRichEvent("af_add_to_wish_list", Search);
콘텐츠 보기
이벤트 이름: af_content_view
목적
이 이벤트의 목적은 사용자가 어떤 호텔을 열람하는지 보여주는 것입니다. 사용자가 찾고있는 숙박 시설 유형이 무엇인지, 계절 및 위치에 따른 선호 조건은 무엇인지 알 수 있습니다. 광고 및 프로모션을 통해 이러한 사용자를 리타겟팅할 수 있습니다. 무엇보다도 어떤 사용자가 열람 후에 예약을 하고, 어떤 사용자가 그냥 보기만 하는지 알 수 있습니다. 실제로 예약하는 사용자에 대해서는 어떤 미디어소스를 통해 방문하게 되었는지 알 수 있습니다. 단순히 열람만 하는 사용자에 대해서도 리타겟팅을 진행할 수 있습니다.
트리거 로직
사용자가 숙박 시설을 열람할 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_price | float | 674 | 호텔 요금 목록 |
af_content_id | string | ODIRNH | 호텔 ID |
af_date_a | string | 2018/07/26 | 체크인 날짜 |
af_date_b | string | 2018/08/01 | 체크아웃 날짜 |
af_destination_a | string | 런던 | 사용자 위치 |
af_destination_b | string | Madrid | 호텔 위치 |
af_class | string | Deluxe | 객실 유형 |
af_num_adults | float | 2 | 숙박 인원수 |
af_num_children | float | 0 | 어린이 인원수 |
af_hotel_score | float | 9.6 | 호텔 리뷰 평점 |
af_preferred_star_ratings | float | 5 | 선호 호텔 등급 |
af_preferred_neighborhoods | string | Centro | 호텔이 위치한 지역 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CURRENCY, "GBP");
eventValue.put(AFInAppEventParameterName.PRICE, 674);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "ODIRNH");
eventValue.put(AFInAppEventParameterName.DATE_A, "2018/07/26");
eventValue.put(AFInAppEventParameterName.DATE_B, "2018/08/01");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "London");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "Madrid");
eventValue.put(AFInAppEventParameterName.CLASS, "Deluxe");
eventValue.put(AFInAppEventParameterName.NUM_ADULTS, 2);
eventValue.put(AFInAppEventParameterName.NUM_CHILDREN, 0);
eventValue.put(AFInAppEventParameterName.HOTEL_SCORE, 9.6);
eventValue.put(AFInAppEventParameterName.PREFERRED_STAR_RATINGS, 5);
eventValue.put(AFInAppEventParameterName.PREFERRED_NEIGHBORHOODS, "Centro");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.CONTENT_VIEW, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventContentView
withValues: @{
AFEventParamCurrency: @"GBP",
AFEventParamPrice: @674,
AFEventParamContentId: @"ODIRNH",
AFEventParamDateA: @"2018/07/26",
AFEventParamDateB: @"2018/08/01",
AFEventParamDestinationA: @"London",
AFEventParamDestinationB: @"Madrid",
AFEventParamClass: @"Deluxe",
AFEventParamNumAdults: @2,
AFEventParamNumChildren: @0,
AFEventParamHotelScore: @9.6,
AFEventParamPreferredStarRatings: @5,
AFEventParamPreferredNeighborhoods: @"Centro"
}];
AppsFlyerTracker.shared().logEvent(AFEventContentView, withValues: [
AFEventParamCurrency: "GBP",
AFEventParamPrice: 674,
AFEventParamContentId: "ODIRNH",
AFEventParamDateA: "2018/07/26",
AFEventParamDateB: "2018/08/01",
AFEventParamDestinationA: "London",
AFEventParamDestinationB: "Madrid",
AFEventParamClass: "Deluxe",
AFEventParamNumAdults: 2,
AFEventParamNumChildren: 0,
AFEventParamHotelScore: 9.6,
AFEventParamPreferredStarRatings: 5,
AFEventParamPreferredNeighborhoods: "Centro"
]);
Dictionary<string, string> ContentView =
new Dictionary<string, string>();
ContentView.Add("af_currency", "GBP");
ContentView.Add("af_price", "674");
ContentView.Add("af_content_id", "ODIRNH");
ContentView.Add("af_date_a", "2018/07/26");
ContentView.Add("af_date_b", "2018/08/01");
ContentView.Add("af_destination_a", "London");
ContentView.Add("af_destination_b", "Madrid");
ContentView.Add("af_class", "Deluxe");
ContentView.Add("af_num_adults", "2");
ContentView.Add("af_num_children", "0");
ContentView.Add("af_hotel_score", "9.6");
ContentView.Add("af_preferred_star_ratings", "5");
ContentView.Add("af_preferred_neighborhoods", "Centro");
AppsFlyer.trackRichEvent("af_content_view", ContentView);
위시리스트에 추가
이벤트 이름: af_add_to_wishlist
목적
위시리스트 추가 이벤트는 사용자가 예약하고 싶어하는 호텔 및 목적지를 나타냅니다. 이 이벤트 기록을 통해 사용자가 원하는 것이 무엇인지 인사이트를 얻을 수 있습니다. 어떤 사용자들이 특정 지역, 특정 평점 및 등급, 특정 호텔을 검색하고 있다면 이런 사용자를 대상으로 리타겟팅할 수 있습니다.
트리거 로직
사용자가 위시리스트에 추가했을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_price | float | 674 | 호텔 요금 목록 |
af_content_id | string | ODIRNH | 호텔 ID |
af_date_a | string | 2018/07/26 | 체크인 날짜 |
af_date_b | string | 2018/08/01 | 체크아웃 날짜 |
af_destination_a | string | 런던 | 사용자 위치 |
af_destination_b | string | Madrid | 호텔 위치 |
af_class | string | Deluxe | 객실 유형 |
af_num_adults | float | 2 | 숙박 인원수 |
af_num_children | float | 0 | 어린이 인원수 |
af_hotel_score | float | 9.6 | 호텔 리뷰 평점 |
af_preferred_star_ratings | float | 5 | 선호 호텔 등급 |
af_preferred_neighborhoods | string | Centro | 호텔이 위치한 지역 |
purchase_method | string | Credit card | 결제 수단 |
af_coupon_code | string | SUM2018 | 프로모션 코드 또는 보상 포인트 |
property_type | string | Hotel | 숙박 시설 유형 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CURRENCY, "GBP");
eventValue.put(AFInAppEventParameterName.PRICE, 674);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "ODIRNH");
eventValue.put(AFInAppEventParameterName.DATE_A, "2018/07/26");
eventValue.put(AFInAppEventParameterName.DATE_B, "2018/08/01");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "London");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "Madrid");
eventValue.put(AFInAppEventParameterName.CLASS, "Deluxe");
eventValue.put(AFInAppEventParameterName.NUM_ADULTS, 2);
eventValue.put(AFInAppEventParameterName.NUM_CHILDREN, 0);
eventValue.put(AFInAppEventParameterName.HOTEL_SCORE, 9.6);
eventValue.put(AFInAppEventParameterName.PREFERRED_STAR_RATINGS, 5);
eventValue.put(AFInAppEventParameterName.PREFERRED_NEIGHBORHOODS, "Centro");
eventValue.put("purchase_method", "credit card");
eventValue.put(AFInAppEventParameterName.COUPON_CODE, "SUM2018");
eventValue.put("property_type", "hotel");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.ADD_TO_WISH_LIST, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventAddToWishlist
withValues: @{
AFEventParamCurrency: @"GBP",
AFEventParamPrice: @674,
AFEventParamContentId: @"ODIRNH",
AFEventParamDateA: @"2018/07/26",
AFEventParamDateB: @"2018/08/01",
AFEventParamDestinationA: @"London",
AFEventParamDestinationB: @"Madrid",
AFEventParamClass: @"Deluxe",
AFEventParamNumAdults: @2,
AFEventParamNumChildren: @0,
AFEventParamHotelScore: @9.6,
AFEventParamPreferredStarRatings: @5,
AFEventParamPreferredNeighborhoods: @"Centro",
@"purchase_method": @"credit card",
AFEventParamCouponCode: @"SUM2018",
@"property_type": @"hotel"
}];
AppsFlyerTracker.shared().logEvent(AFEventAddToWishlist, withValues: [
AFEventParamCurrency: "GBP",
AFEventParamPrice: 674,
AFEventParamContentId: "ODIRNH",
AFEventParamDateA: "2018/07/26",
AFEventParamDateB: "2018/08/01",
AFEventParamDestinationA: "London",
AFEventParamDestinationB: "Madrid",
AFEventParamClass: "Deluxe",
AFEventParamNumAdults: 2,
AFEventParamNumChildren: 0,
AFEventParamHotelScore: 9.6,
AFEventParamPreferredStarRatings: 5,
AFEventParamPreferredNeighborhoods: "Centro",
"purchase_method": "credit card",
AFEventParamCouponCode: "SUM2018",
"property_type": "hotel"
]);
Dictionary<string, string> AddToWishList =
new Dictionary<string, string>();
AddToWishList.Add("af_currency", "GBP");
AddToWishList.Add("af_price", "674");
AddToWishList.Add("af_content_id", "ODIRNH");
AddToWishList.Add("af_date_a", "2018/07/26");
AddToWishList.Add("af_date_b", "2018/08/01");
AddToWishList.Add("af_destination_a", "London");
AddToWishList.Add("af_destination_b", "Madrid");
AddToWishList.Add("af_class", "Deluxe");
AddToWishList.Add("af_num_adults", "2");
AddToWishList.Add("af_num_children", "0");
AddToWishList.Add("af_hotel_score", "9.6");
AddToWishList.Add("af_preferred_star_ratings", "5");
AddToWishList.Add("af_preferred_neighborhoods", "Centro");
AddToWishList.Add("purchase_method", "credit card");
AddToWishList.Add("af_coupon_code", "SUM2018");
AddToWishList.Add("af_property_type", "hotel");
AppsFlyer.trackRichEvent("af_add_to_wish_list", AddToWishList);
결제 시작
이벤트 이름: af_initiated_checkout
목적
이 이벤트의 목적은 얼마나 많은 사용자가 결제를 시작했는지를 기록하는 것입니다. 추가로, 결제 수단(신용카드, 전자 지갑)이 무엇인지 알 수 있고 이에 따른 타겟팅도 가능합니다. 또한 결제 절차를 완료하지 않는 사용자를 알 수 있고, 이를 대상으로 리타겟팅할 수도 있습니다.
트리거 로직
사용자가 신용카드 정보를 추가하거나 전자 지갑과 연결할 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_price | float | 674 | 호텔 요금 목록 |
af_content_id | string | ODIRNH | 호텔 ID |
af_date_a | string | 2018/07/26 | 체크인 날짜 |
af_date_b | string | 2018/08/01 | 체크아웃 날짜 |
af_destination_a | string | 런던 | 사용자 위치 |
af_destination_b | string | Madrid | 호텔 위치 |
af_class | string | Deluxe | 객실 유형 |
af_num_adults | float | 2 | 숙박 인원수 |
af_num_children | float | 0 | 어린이 인원수 |
af_hotel_score | float | 9.6 | 호텔 리뷰 평점 |
af_preferred_star_ratings | float | 5 | 선호 호텔 등급 |
af_preferred_neighborhoods | string | Centro | 호텔이 위치한 지역 |
purchase_method | string | Credit card | 결제 수단 |
af_coupon_code | string | SUM2018 | 프로모션 코드 또는 보상 포인트 |
property_type | string | Hotel | 숙박 시설 유형 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CURRENCY, "GBP");
eventValue.put(AFInAppEventParameterName.PRICE, 674);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "ODIRNH");
eventValue.put(AFInAppEventParameterName.DATE_A, "2018/07/26");
eventValue.put(AFInAppEventParameterName.DATE_B, "2018/08/01");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "London");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "Madrid");
eventValue.put(AFInAppEventParameterName.CLASS, "Deluxe");
eventValue.put(AFInAppEventParameterName.NUM_ADULTS, 2);
eventValue.put(AFInAppEventParameterName.NUM_CHILDREN, 0);
eventValue.put(AFInAppEventParameterName.HOTEL_SCORE, 9.6);
eventValue.put(AFInAppEventParameterName.PREFERRED_STAR_RATINGS, 5);
eventValue.put(AFInAppEventParameterName.PREFERRED_NEIGHBORHOODS, "Centro");
eventValue.put("purchase_method", "credit card");
eventValue.put(AFInAppEventParameterName.COUPON_CODE, "SUM2018");
eventValue.put("property_type", "hotel");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.INITIATED_CHECKOUT, eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:AFEventInitiatedCheckout
withValues: @{
AFEventParamCurrency: @"GBP",
AFEventParamPrice: @674,
AFEventParamContentId: @"ODIRNH",
AFEventParamDateA: @"2018/07/26",
AFEventParamDateB: @"2018/08/01",
AFEventParamDestinationA: @"London",
AFEventParamDestinationB: @"Madrid",
AFEventParamClass: @"Deluxe",
AFEventParamNumAdults: @2,
AFEventParamNumChildren: @0,
AFEventParamHotelScore: @9.6,
AFEventParamPreferredStarRatings: @5,
AFEventParamPreferredNeighborhoods: @"Centro",
@"purchase_method": @"credit card",
AFEventParamCouponCode: @"SUM2018",
@"property_type": @"hotel"
}];
AppsFlyerTracker.shared().logEvent(AFEventInitiatedCheckout, withValues: [
AFEventParamCurrency: "GBP",
AFEventParamPrice: 674,
AFEventParamContentId: "ODIRNH",
AFEventParamDateA: "2018/07/26",
AFEventParamDateB: "2018/08/01",
AFEventParamDestinationA: "London",
AFEventParamDestinationB: "Madrid",
AFEventParamClass: "Deluxe",
AFEventParamNumAdults: 2,
AFEventParamNumChildren: 0,
AFEventParamHotelScore: 9.6,
AFEventParamPreferredStarRatings: 5,
AFEventParamPreferredNeighborhoods: "Centro",
"purchase_method": "credit card",
AFEventParamCouponCode: "SUM2018",
"property_type": "hotel"
]);
Dictionary<string, string> InitiatedCheckout =
new Dictionary<string, string>();
InitiatedCheckout.Add("af_currency", "GBP");
InitiatedCheckout.Add("af_price", "674");
InitiatedCheckout.Add("af_content_id", "ODIRNH");
InitiatedCheckout.Add("af_date_a", "2018/07/26");
InitiatedCheckout.Add("af_date_b", "2018/08/01");
InitiatedCheckout.Add("af_destination_a", "London");
InitiatedCheckout.Add("af_destination_b", "Madrid");
InitiatedCheckout.Add("af_class", "Deluxe");
InitiatedCheckout.Add("af_num_adults", "2");
InitiatedCheckout.Add("af_num_children", "0");
InitiatedCheckout.Add("af_hotel_score", "9.6");
InitiatedCheckout.Add("af_preferred_star_ratings", "5");
InitiatedCheckout.Add("af_preferred_neighborhoods", "Centro");
InitiatedCheckout.Add("purchase_method", "credit card");
InitiatedCheckout.Add("af_coupon_code", "SUM2018");
InitiatedCheckout.Add("af_property_type", "hotel");
AppsFlyer.trackRichEvent("af_initiated_chekcout", InitiatedCheckout);
여행 예약
이벤트 이름: travel_booking
목적
여행 예약 이벤트의 목적은 앱의 전체적인 예약률을 파악하는 것입니다. 추가로 이 이벤트를 통해 다음을 할 수 있습니다.
- 예약에서 발생한 수익을 기록할 수 있습니다.
- 얼마나 많은 사용자가 호텔을 어린이와 함께 예약하는지 알 수 있습니다.
- 계절별 트렌드를 알 수 있습니다.
- 사용자에게 인기있는 호텔이 어디인지 알 수 있습니다.
트리거 로직
호텔 예약을 마친 후, 사용자가 예약 확인 페이지를 방문할 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_revenue | float | 647 | 예약으로 발생한 수익 |
af_currency | string | GBP | 통화 코드 |
af_price | float | 674 | 호텔 요금 목록 |
af_content_id | string | ODIRNH | 호텔 ID |
af_date_a | string | 2018/07/26 | 체크인 날짜 |
af_date_b | string | 2018/08/01 | 체크아웃 날짜 |
af_destination_a | string | 런던 | 사용자 위치 |
af_destination_b | string | Madrid | 호텔 위치 |
af_class | string | Deluxe | 객실 유형 |
af_num_adults | float | 2 | 숙박 인원수 |
af_num_children | float | 0 | 어린이 인원수 |
af_hotel_score | float | 9.6 | 호텔 리뷰 평점 |
af_preferred_star_ratings | float | 5 | 선호 호텔 등급 |
af_preferred_neighborhoods | string | Centro | 호텔이 위치한 지역 |
purchase_method | string | Credit card | 결제 수단 |
af_coupon_code | string | SUM2018 | 프로모션 코드 또는 보상 포인트 |
property_type | string | Hotel | 숙박 시설 유형 |
new_booking | boolean | true | 첫 번째 예약인지 여부 |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REVENUE, 647);
eventValue.put(AFInAppEventParameterName.CURRENCY, "GBP");
eventValue.put(AFInAppEventParameterName.PRICE, 674);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "ODIRNH");
eventValue.put(AFInAppEventParameterName.DATE_A, "2018/07/26");
eventValue.put(AFInAppEventParameterName.DATE_B, "2018/08/01");
eventValue.put(AFInAppEventParameterName.DESTINATION_A, "London");
eventValue.put(AFInAppEventParameterName.DESTINATION_B, "Madrid");
eventValue.put(AFInAppEventParameterName.CLASS, "Deluxe");
eventValue.put(AFInAppEventParameterName.NUM_ADULTS, 2);
eventValue.put(AFInAppEventParameterName.NUM_CHILDREN, 0);
eventValue.put(AFInAppEventParameterName.HOTEL_SCORE, 9.6);
eventValue.put(AFInAppEventParameterName.PREFERRED_STAR_RATINGS, 5);
eventValue.put(AFInAppEventParameterName.PREFERRED_NEIGHBORHOODS, "Centro");
eventValue.put("purchase_method", "credit card");
eventValue.put(AFInAppEventParameterName.COUPON_CODE, "SUM2018");
eventValue.put("property_type", "hotel");
eventValue.put("new_booking", true);
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "travel_booking", eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:@"travel_booking"
withValues: @{
AFEventParamRevenue: @647,
AFEventParamCurrency: @"GBP",
AFEventParamPrice: @674,
AFEventParamContentId: @"ODIRNH",
AFEventParamDateA: @"2018/07/26",
AFEventParamDateB: @"2018/08/01",
AFEventParamDestinationA: @"London",
AFEventParamDestinationB: @"Madrid",
AFEventParamClass: @"Deluxe",
AFEventParamNumAdults: @2,
AFEventParamNumChildren: @0,
AFEventParamHotelScore: @9.6,
AFEventParamPreferredStarRatings: @5,
AFEventParamPreferredNeighborhoods: @"Centro",
@"purchase_method": @"credit card",
AFEventParamCouponCode: @"SUM2018",
@"property_type": @"hotel",
@"new_booking": @TRUE
}];
AppsFlyerTracker.shared().logEvent("travel_booking", withValues: [
AFEventParamRevenue: 647,
AFEventParamCurrency: "GBP",
AFEventParamPrice: 674,
AFEventParamContentId: "ODIRNH",
AFEventParamDateA: "2018/07/26",
AFEventParamDateB: "2018/08/01",
AFEventParamDestinationA: "London",
AFEventParamDestinationB: "Madrid",
AFEventParamClass: "Deluxe",
AFEventParamNumAdults: 2,
AFEventParamNumChildren: 0,
AFEventParamHotelScore: 9.6,
AFEventParamPreferredStarRatings: 5,
AFEventParamPreferredNeighborhoods: "Centro",
"purchase_method": "credit card",
AFEventParamCouponCode: "SUM2018",
"property_type": "hotel",
"new_booking": true
]);
Dictionary<string, string> TravelBooking =
new Dictionary<string, string>();
TravelBooking.Add("af_revenue", "647");
TravelBooking.Add("af_currency", "GBP");
TravelBooking.Add("af_price", "674");
TravelBooking.Add("af_content_id", "ODIRNH");
TravelBooking.Add("af_date_a", "2018/07/26");
TravelBooking.Add("af_date_b", "2018/08/01");
TravelBooking.Add("af_destination_a", "London");
TravelBooking.Add("af_destination_b", "Madrid");
TravelBooking.Add("af_class", "Deluxe");
TravelBooking.Add("af_num_adults", "2");
TravelBooking.Add("af_num_children", "0");
TravelBooking.Add("af_hotel_score", "9.6");
TravelBooking.Add("af_preferred_star_ratings", "5");
TravelBooking.Add("af_preferred_neighborhoods", "Centro");
TravelBooking.Add("purchase_method", "credit card");
TravelBooking.Add("af_coupon_code", "SUM2018");
TravelBooking.Add("af_property_type", "hotel");
TravelBooking.Add("af_new_booking", "true");
AppsFlyer.trackRichEvent("travel_booking", TravelBooking);
첫 구매
이벤트 이름: first_purchase
목적
이 이벤트는 구매 이벤트와 같습니다. 하지만, 구매 이벤트와는 다르게, 첫 구매 이벤트는 다음 용도로 사용할 수 있습니다.
- 새 구매자가 구매까지 얼마나 걸리는지 알 수 있습니다.
- 처음으로 구매하는 사용자는 어떤 제품을 구매하는지 알 수 있습니다.
- 첫 구매의 평균 가격 및 수익을 알 수 있습니다.
트리거 로직
사용자가 첫 번째 구매를 완료했을 때 이벤트를 트리거합니다.
권장 속성
파라미터 이름 | 유형 | 예제값 | 설명 |
---|---|---|---|
af_revenue | float | 1200 | 구매 수익 |
af_price | float | 4000 | 전체 구매액 |
af_content_id | string | 121, 262 | 아이템 ID |
af_content_type | string | hotel | 아이템 카테고리 |
af_currency | string | AUD | 통화 |
af_quantity | int | 1 | 장바구니에 담긴 아이템 개수 |
af_order_id | string | X123ABC | 구매한 다음에 발생한 주문 ID |
af_receipt_id | string | X123ABC | 크리테오 및 구글 애드워즈 리타겟팅 연동에 필요한 주문 ID |
코드 예
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.PRICE, 350);
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "221");
// for multiple product categories, set the param value as: new String {"221", "124"}
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "hotel");
// for multiple product categories set the param value as: new String {"hotel", "meals"}
eventValue.put(AFInAppEventParameteName.CURRENCY, "USD");
eventValue.put(AFInAppEventParameterName.QUANTITY, 2);
// for multiple product categories, set the param value as: new int {1}
eventValue.put(AFInAppEventParameterName.RECEIPT_ID, "X123ABC");
eventValue.put("af_order_id", "X123ABC");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "first_purchase", eventValue);
[[AppsFlyerTracker sharedTracker] logEvent:("first_purchase")
withValues: @{
AFEventParamRevenue: @1200,
AFEventParamPrice: @4000,
AFEventParamContentId: @"221",
// for multiple product categories, set the param value as: @[@"221", @"124"]
AFEventParamContentType: @"hotel",
// for multiple product categories, set the param value as: @[@"hotel", @"meals"]
AFEventParamCurrency: @"USD",
AFEventParamQuantity: @2,
// for multiple product categories, set the param value as: @[@1]
AFEventParamOrderId: @"X123ABC",
AFEventParamReceiptId: @"X123ABC"
}];
AppsFlyerTracker.shared().logEvent("first_purchase", withValues: [
AFEventParamRevenue: 1200,
AFEventParamPrice: 4000,
AFEventParamContentId: "221",
// for multiple product categories, set the param value as: ["221", "124"]
AFEventParamContentType: "hotel",
// for multiple product categories, set the param value as: ["hotel", "meals"]
AFEventParamCurrency: "USD",
AFEventParamQuantity: 2,
// for multiple product categories, set the param value as: // [1]
AFEventParamOrderId: "X123ABC",
AFEventParamReceiptId: "X123ABC"
]);
Dictionary<string, string> FirstPurchaseEvent = new Dictionary<string, string>();
FirstPurchaseEvent.Add("af_revenue", "1200");
FirstPurchaseEvent.Add("af_price", "4000");
FirstPurchaseEvent.Add("af_content_id", "121");
// for multiple product categories, set the param value as: ["221", "124"]
FirstPurchaseEvent.Add("af_content_type", "hotel");
// for multiple product categories, set the param value as: ["hotel", "meals"]
FirstPurchaseEvent.Add("af_currency", "USD");
FirstPurchaseEvent.Add("af_quantity", "2");
// for multiple product categories, set the param value as: [1]
FirstPurchaseEvent.Add("af_order_id", "X123ABC");
FirstPurchaseEvent.Add("af_receipt_id", "X123ABC");
AppsFlyer.trackRichEvent ("first_purchase", FirstPurchaseEvent);