기본 사용법
사용자가 앱에서 뭘 하는지 추적하면 대시보드에서 통계를 볼 수 있습니다. 어떤 기능을 많이 쓰는지, 어떤 광고를 많이 클릭하는지 등을 파악할 수 있습니다.
기본 사용법
이벤트를 보내는 건 간단합니다:
Android:
AdchainSdk.trackEvent(
eventName = "button_click",
payload = mapOf(
"button_name" to "start_button",
"screen" to "home"
)
)iOS:
AdchainSdk.shared.trackEvent(
"button_click",
payload: [
"button_name": "start_button",
"screen": "home"
]
)React Native:
await AdchainSdk.trackEvent('button_click', {
button_name: 'start_button',
screen: 'home',
});이벤트 이름(eventName)은 필수이고, 추가 정보(payload)는 선택입니다.
이벤트 네이밍
이벤트 이름은 명확하게 작성하는 것이 좋습니다:
button_click- 버튼 클릭screen_view- 화면 조회offerwall_open- 오퍼월 열림purchase- 구매level_up- 레벨업
일반적으로 snake_case(소문자+언더스코어)를 많이 사용합니다.
Payload에 뭘 넣을까요?
이벤트와 관련된 추가 정보를 넣으면 됩니다:
// 버튼 클릭
trackEvent("button_click", mapOf(
"button_name" to "reward_button",
"screen" to "home",
"button_position" to "top_right"
))
// 구매
trackEvent("purchase", mapOf(
"item_id" to "item_123",
"item_name" to "다이아 100개",
"amount" to 9900,
"currency" to "KRW"
))
// 레벨업
trackEvent("level_up", mapOf(
"level" to 15,
"character" to "warrior"
))값은 문자열, 숫자, 불린 다 됩니다.
자동으로 보내지는 이벤트
SDK가 자동으로 보내는 이벤트들이 있습니다:
session_start- 앱 시작user_login- 사용자 로그인offerwall_open- 오퍼월 열림offerwall_close- 오퍼월 닫힘ad_click- 광고 클릭
이런 건 따로 보낼 필요 없습니다.
이벤트는 언제 전송되나요?
이벤트는 즉시 전송되지 않고, 배치로 모아서 보냅니다:
기본 설정: 10개 모이거나 30초마다
DAU 이벤트:
session_start,user_login은 즉시 전송
이렇게 하는 이유는 네트워크 요청을 최적화하기 위해서입니다.
즉시 전송하기
급하게 보내야 한다면:
AdchainSdk.trackEvent("important_event", mapOf(...))
AdchainSdk.flushEvents() // 지금 바로 전송하지만 매번 즉시 전송하면 비효율적입니다.
오프라인에서는?
인터넷이 안 될 때 이벤트를 보내면, SDK가 로컬에 저장해뒀다가 나중에 인터넷이 되면 자동으로 전송합니다.
Android: Room Database에 저장
iOS: 로컬 파일에 저장
최대 1000개까지 저장하고, 그 이상은 오래된 것부터 삭제됩니다.
권장 이벤트
일반적으로 많이 쓰는 이벤트들입니다. 참고하세요:
화면 조회
trackEvent("screen_view", mapOf(
"screen_name" to "main",
"previous_screen" to "splash"
))구매
trackEvent("purchase", mapOf(
"item_id" to "item_123",
"amount" to 9900,
"currency" to "KRW",
"payment_method" to "card"
))검색
trackEvent("search", mapOf(
"query" to "다이아",
"results_count" to 15
))공유
trackEvent("share", mapOf(
"content_type" to "achievement",
"content_id" to "level_100",
"method" to "kakao"
))튜토리얼
trackEvent("tutorial_complete", mapOf(
"step" to 5,
"duration" to 120 // 초
))주의사항
개인정보 넣지 마세요
이벤트에 개인정보를 넣으면 안 됩니다:
// ❌ 나쁜 예
trackEvent("login", mapOf(
"email" to "[email protected]", // 개인정보!
"password" to "123456" // 더 안 됨!
))
// ✅ 좋은 예
trackEvent("login", mapOf(
"login_method" to "email",
"success" to true
))너무 많이 보내지 마세요
이벤트를 너무 자주 보내면:
네트워크 비용 증가
서버 부하가 올라감
예를 들어 스크롤할 때마다 이벤트를 보내는 건 과하고, 중요한 액션(버튼 클릭, 구매 등)만 보내는 게 좋습니다.
Payload 크기
Payload가 너무 크면 안 됩니다. 1KB 이내로 유지하세요. 긴 텍스트나 큰 데이터는 요약해서 보내거나, 서버에 따로 저장하고 ID만 보내세요.
다음 단계
Last updated