Android SDK - 인앱 이벤트 추적

인앱 이벤트 추적

인앱 이벤트를 추적하여 캠페인 성과를 분석하고 사용자 로그인, 회원가입, 튜토리얼 완료, 진행 단계 달성과 같은 핵심성과지표(KPI)를 측정하세요.

표준 이벤트 및 속성

표준 이벤트 사용

Singular은 광고 네트워크가 리포팅 및 최적화를 위해 인식하는 표준 이벤트 를 지원합니다. 자동 인식과 간편한 설정을 위해 가능한 한 표준 이벤트 이름을 사용하세요.

UA, 마케팅 또는 비즈니스 팀이 조직의 마케팅 KPI를 기반으로 이벤트 목록을 작성해야 합니다. 계획 수립에 대해서는 인앱 이벤트 추적 방법: Singular 어트리뷰션 고객을 위한 가이드 를 참고하세요.

각 이벤트는 다양한 속성을 지원합니다. 구현 세부 정보는 이벤트별 권장 표준 속성 을 참고하세요.


이벤트 전송

이벤트 구현 가이드라인

eventJSON 또는 event 메서드를 사용하여 Singular에 이벤트를 전송하세요(가독성 향상을 위해 eventJSON 을 권장합니다).

  • 표준 이벤트: 표준 이벤트 목록의 이벤트 Android 이름 을 사용하세요(예: sngTutorialComplete )
  • 커스텀 이벤트: 표준 이벤트와 일치하지 않는 앱 고유의 이벤트의 경우, 문자 제한을 준수하는 설명적인 문자열을 사용하세요

커스텀 이벤트 제한사항:

  • 언어: 서드파티 파트너 및 분석 솔루션과의 호환성을 보장하기 위해 이벤트 이름과 속성을 영어로 전달하세요
  • 이벤트 이름: ASCII 문자 32자로 제한됩니다. 비ASCII 문자열은 UTF-8로 변환했을 때 32바이트 미만이어야 합니다
  • 속성 및 값: ASCII 문자 500자로 제한됩니다

eventJSON 메서드

구조화된 데이터를 위해 JSONObject 형식을 사용하여 추가 정보와 함께 사용자 이벤트를 보고합니다.

메서드 시그니처:

Singular.eventJSON(String name, JSONObject args)

참고: args 매개변수는 하나 이상의 키-값 쌍을 포함하는 JSONObject입니다. 키는 문자열이어야 하며 값은 JSONObject 값으로 허용되는 모든 타입이 될 수 있습니다.

사용 예시

Kotlin Java
// Example 1: Standard event with recommended attributes
val att = JSONObject().apply {
    put(Attributes.sngAttrContent.toString(), "Telugu")
    put(Attributes.sngAttrContentId.toString(), 32)
    put(Attributes.sngAttrContentType.toString(), "video")
    put(Attributes.sngAttrSuccess.toString(), 75)
}
Singular.eventJSON(Events.sngTutorialComplete.toString(), att)

// Example 2: Custom event with custom attributes
val att = JSONObject().apply {
    put("Points", 500)
    put("score", 650)
}
Singular.eventJSON("Bonus Points Earned", att)

event 메서드

가변 인자를 사용하여 추가 정보를 포함하거나 포함하지 않고 사용자 이벤트를 보고합니다.

메서드 시그니처:

Singular.event(String eventName)
Singular.event(String eventName, Object... args)

참고: args 매개변수는 하나 이상의 키-값 쌍을 받습니다. 키는 문자열이어야 하며 값은 JSONObject 값으로 허용되는 모든 타입(JSONObject, JSONArray, String, Boolean, Integer, Long, Double 또는 NULL)이 될 수 있습니다. args 목록은 짝수 개의 요소를 포함해야 하며 그렇지 않으면 이벤트가 거부됩니다.

사용 예시

Kotlin Java
// Example 1: Standard event without attributes
Singular.event(Events.sngSubscribe.toString())

// Example 2: Standard event with recommended attributes
Singular.event(Events.sngTutorialComplete.toString(),
    Attributes.sngAttrContent.toString(), "Telugu",
    Attributes.sngAttrContentId.toString(), "32",
    Attributes.sngAttrContentType.toString(), "video",
    Attributes.sngAttrSuccess.toString(), "yes"
)

// Example 3: Custom event without attributes
Singular.event("SignUp")

// Example 4: Custom event with custom attribute
Singular.event("Bonus Points Earned", "Points", 500)

인앱 수익 추적

인앱 구매(IAP), 구독 및 커스텀 수익원에서 발생하는 수익을 추적하여 캠페인 성과와 광고 비용 대비 수익률(ROAS)을 측정하세요.

수익 데이터는 세 가지 채널을 통해 전달됩니다:

  • 인터랙티브 리포트: Singular 대시보드에서 수익 지표를 확인합니다
  • Export Logs: 커스텀 분석을 위한 상세 ETL 데이터에 액세스합니다
  • 실시간 포스트백: 외부 플랫폼으로 수익 이벤트를 전송합니다

수익 이벤트 제한사항:

  • 이벤트 이름: 커스텀 수익 이벤트 이름은 ASCII 문자 32자(비ASCII의 경우 UTF-8로 변환 시 32바이트)로 제한됩니다
  • 속성: 이벤트 속성 이름과 값은 ASCII 문자 500자로 제한됩니다
  • 통화 코드: 모두 대문자로 작성해야 하며 세 글자 ISO 4217 표준 을 따라야 합니다(예: USD, EUR, INR)

모범 사례

  • 표준 명명: Singular의 표준 이벤트 및 속성 명명 규칙 을 사용하세요
  • 언어: 광고 네트워크 포스트백 호환성 향상을 위해 커스텀 수익 이벤트 이름을 영어로 전송하세요
  • 0이 아닌 금액: 금액이 0보다 크거나 작은 경우에만 수익 이벤트를 전송하세요

비구독 인앱 구매

Purchase 객체 연동

Google Billing Library의 Purchase 객체를 revenue 또는 customRevenue 메서드에 전달하여 강화된 리포팅 및 거래 검증을 활용하세요.

이점:

  • 풍부한 데이터: Singular이 종합적인 리포트를 위한 완전한 거래 세부 정보를 수신합니다
  • 사기 방지: 거래 영수증을 통해 검증이 가능하여 인앱 사기를 방지합니다

참고:

  • 커스텀 이벤트 이름: customRevenue 메서드는 리포트에서 이벤트 유형별로 수익을 분류하기 위한 커스텀 이벤트 이름을 받습니다
  • 통화 변환: 다른 통화의 수익은 조직의 기본 통화로 자동 변환됩니다

Purchase를 사용한 revenue 메서드

자동 검증 및 강화된 데이터를 위해 Purchase 객체와 함께 수익 이벤트를 전송합니다.

메서드 시그니처:

Singular.revenue(String currency, double amount, Object purchase)

사용 예시

Kotlin Java
Singular.revenue("USD", 5.50, purchase)

Purchase를 사용한 customRevenue 메서드

분류된 수익 추적을 위해 커스텀 이름과 Purchase 객체와 함께 수익 이벤트를 전송합니다.

메서드 시그니처:

Singular.customRevenue(String eventName, String currency, double amount, Object purchase)

사용 예시

Kotlin Java
Singular.customRevenue("MyCustomRevenue", "USD", 5.50, purchase)

구독 수익

구독 이벤트 구현

구독 구매 및 갱신을 추적하여 사용자 행동과 반복 수익 창출에 대한 인사이트를 확보하세요.

구현 가이드: Singular SDK로 구독을 추적하는 방법에 대한 자세한 안내는 종합적인 구독 이벤트 기술 구현 가이드 를 확인하세요.


Purchase 검증 없는 커스텀 수익

수동 수익 추적

Purchase 객체 없이 통화, 금액 및 선택적 제품 세부 정보를 전달하여 수익을 추적합니다. 이 방법은 검증을 위한 거래 영수증을 제공하지 않습니다.

중요: 이 메서드를 사용하면 Singular이 거래를 검증할 수 없습니다. 가능한 경우 항상 위에서 설명한 Purchase 객체 메서드를 사용할 것을 강력히 권장합니다.


Purchase 없는 revenue 메서드

통화, 금액 및 선택적 제품 세부 정보와 함께 수익 이벤트를 전송합니다.

메서드 시그니처:

Singular.revenue(String currency, double amount)
Singular.revenue(String currency, double amount, String productSKU, String productName, String productCategory, int productQuantity, double productPrice)
Singular.revenue(String currency, double amount, Map<String, Object> attributes)

사용 예시

Kotlin Java
// Without product details
Singular.revenue("USD", 5.50)

// With product details
Singular.revenue("EUR", 5.00, "SKU1928375", "Reservation Fee", "Fee", 1, 5.00)

// With product details in an attribute map
val attributes = mutableMapOf<String, Any>().apply {
    put("product_id", "com.app.premium")
    put("transaction_id", "T12345")
    put("quantity", 1)
    put("is_trial", false)
}
Singular.revenue("USD", 9.99, attributes)

Purchase 없는 customRevenue 메서드

지정된 이벤트 이름, 통화, 금액 및 선택적 거래 속성과 함께 커스텀 수익 이벤트를 전송합니다.

메서드 시그니처:

Singular.customRevenue(String eventName, String currency, double amount)
Singular.customRevenue(String eventName, String currency, double amount, String productSKU, String productName, String productCategory, int productQuantity, double productPrice)
Singular.customRevenue(String eventName, String currency, double amount, Map<String, Object> attributes)

사용 예시

Kotlin Java
// Without product details
Singular.customRevenue("MyCustomRevenue", "USD", 5.50)

// With product details
Singular.customRevenue("MyCustomRevenue", "EUR", 5.00, "SKU1928375", "Reservation Fee", "Fee", 1, 5.00)

// With product details in an attribute map
val attributes = mutableMapOf<String, Any>().apply {
    put("product_id", "com.app.premium")
    put("transaction_id", "T12345")
    put("quantity", 1)
    put("is_trial", false)
}
Singular.customRevenue("MyCustomRevenue", "USD", 9.99, attributes)

하이브리드 이벤트 추적 (고급)

최적의 어트리뷰션을 위해 앱에 연동된 Singular SDK를 통해 모든 이벤트와 수익을 전송하세요. 다만 필요한 경우 Singular은 다른 소스에서 이벤트를 수집할 수 있습니다.

Singular SDK 외부에서 전송되는 이벤트는 Singular의 서버 간(S2S) 이벤트 문서 를 준수해야 하며 정확한 어트리뷰션을 위해 일치하는 기기 식별자를 제공해야 합니다.

중요:

서버 간 요청의 기기 식별자가 Singular SDK가 기록한 식별자와 일치하지 않으면 불일치가 발생합니다:

  • 조기 이벤트: Singular SDK가 기기 식별자를 기록하기 전에 이벤트가 도착하면, 해당 이벤트는 알 수 없는 기기의 "첫 세션"이 되어 자연 어트리뷰션으로 처리됩니다
  • 불일치 식별자: Singular SDK가 서버 간 요청의 식별자와 다른 기기 식별자를 기록한 경우, 이벤트가 잘못 어트리뷰션됩니다

하이브리드 이벤트 추적 가이드

내부 서버에서 이벤트 전송

내부 서버에서 수익 데이터를 수집하여 캠페인 성과와 ROI를 분석하세요.

요구사항:

  • 기기 식별자 캡처: 인앱 회원가입 또는 로그인 이벤트 중에 기기 식별자를 캡처하고 전달한 다음, 이 데이터를 User ID와 함께 서버에 저장하세요. 정확한 어트리뷰션을 위해 사용자가 새 앱 세션을 생성할 때 식별자를 업데이트하세요
  • 플랫폼별 식별자: 플랫폼에 맞는 기기 식별자(예: iOS 기기의 경우 IDFA 또는 IDFV)와 함께 서버 측 이벤트를 전송하세요
  • 실시간 업데이트: Singular Internal BI 포스트백 메커니즘을 사용하여 이벤트를 실시간으로 엔드포인트에 푸시하세요. Internal BI Postback FAQ 를 참고하세요
  • 구현 세부 정보: 서버 간 연동 가이드의 "Tracking Revenue" 섹션을 확인하세요

수익 제공업체에서 이벤트 전송

RevenueCat 또는 adapty와 같은 서드파티 수익 제공업체를 연동하여 구매 및 구독 수익을 Singular에 전송하세요.

지원되는 제공업체:


Segment에서 이벤트 전송

Segment에서 "Cloud-Mode" 데스티네이션을 추가하여 Singular SDK와 병행하여 Segment가 Singular로 이벤트를 전송하도록 설정하세요.

자세한 설정 방법은 구현 가이드 Singular-Segment 연동 을 참고하세요.