기본 사용법

사용자가 앱에서 뭘 하는지 추적하면 대시보드에서 통계를 볼 수 있습니다. 어떤 기능을 많이 쓰는지, 어떤 광고를 많이 클릭하는지 등을 파악할 수 있습니다.

기본 사용법

이벤트를 보내는 건 간단합니다:

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