Android SDK 이벤트 및 매출 트래킹

Singular Android SDK
다운로드 Singular Android SDK version 12.1.1
호환성

Android 4.0.1 (Ice Cream Sandwich) 이상

  • 본 SDK는 Play Store 4 버전 이상을 사용하는 디바이스의 Android 광고 ID를 사용합니다. 이하 버전의 디바이스는 Android ID를 사용합니다.
  • 최신 SDK 버전은 Android 4.0.1 이하 버전에서 테스트를 진행하지 않아 호환성이 보장되지 않습니다.
샘플 앱 베스트 프랙티스에 기반한 전체 SDK 연동 방법 확인을 위해 샘플 앱을 참조해 주세요.
연동 가이드

 

이벤트 트래킹

캠페인 성과를 분석하고 KPI를 측정하기 위해 Singular를 통해 앱 내의 이벤트 데이터를 수집할 수 있습니다.

예를 들어 게임 고객사는 유저 로그인, 회원 가입, 튜토리얼 완료, 레벨 업 등과 같은 데이터를 수집하기를 원할 수 있습니다.

이 경우 event eventJSON 메서드를 사용해서 Singular로 인앱이벤트를 보낼 수 있습니다.

주의:

  • 서드 파티 파트너 및 외부 분석 솔루션과의 호환성을 위해 이벤트 이름과 속성에는 영어를 사용하세요.
  • 이벤트 이름은 32자 이하의 ASCII 캐릭터로 제한됩니다. ASCII 캐릭터가 아닌 문자열은 UTF-8로 변환되었을 때 32 byte 미만이어야 합니다.
  • 속성과 값은 500자 이하의 ASCII 캐릭터로 제한됩니다.
Singular.event 메서드
정의 트래킹을 위해 이벤트를 추가 정보 없이 Singular로 전송
메서드

Singular.event(String eventName)

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

주의: 'args'는 아래 예제처럼 하나 이상의 키-밸류 쌍으로 이뤄집니다. 키는 문자열을 사용하고, 값은 JSONObject에서 허용하는 타입을 사용합니다. (예:  JSONObject, JSONArray, String, Boolean, Integer, Long, Double, NULL) 'args' 리스트는 짝수의 원소로 이뤄져야 하며 홀수인 경우 Singular에서 리젝됩니다.

사용예
// 아규먼트 없이 로그인 이벤트 전송
Singular.event("Login");
// quantity, product, price로 이뤄진 아규먼트와 함께
// "Purchase_Complete" 이벤트를 전송
Singular.event("Purchase_Complete", "quantity", 3, 
"product", "cotton shirt", "price", 42.34);
Singular.eventJSON 메서드
정의 JSONObject 형식으로 된 추가 정보를 포함하여 이벤트를 Singular로 전송
메서드 Singular.eventJSON(String name, JSONObject args)

주의: 'args'는 하나 이상의 키-밸류 쌍으로 이뤄진 JSONObject 입니다. 키는 문자열을 사용하고, 값은 JSONObject에서 허용하는 값을 사용합니다. 

사용예
import org.json.*
try {
  JSONArray contents = new JSONArray();
  JSONObject item1 = new JSONObject();

  item1.put("sku", "UPC-018627610014");
  item1.put("qty", 2);
  item1.put("unit_price", 8.99);
  item1.put("currency", "USD");
  contents.put(item1);

  JSONObject item2 = new JSONObject();
  item2.put("sku", "UPC-070271003758");
  item2.put("qty", 1);
  item2.put("unit_price", 15.99);
  item2.put("currency", "USD");
  contents.put(item2);

  JSONObject args = new JSONObject();
  args.put("contents", contents);
  args.put("total", 63.96);
  args.put("currency", "USD");
  args.put("member_id", "A556740089");

  // Record the event with Singular
  Singular.eventJSON("Purchase_Complete", args);
}
catch(JSONException e) {
  android.util.Log.e("Now", "JSON Exception in cart");
}

매출 트래킹

캠페인 성과 및 캠페인 ROI를 분석하기 위해 Singular를 통해 앱 내의 매출 데이터를 수집할 수 있습니다. 수집하는 경우 Singular의 리포트, 로그 익스포트, 포스트백을 통해 해당 데이터를 확인할 수 있습니다.

Singular에 매출 이벤트를 보내는 경우 빌링 라이브러리에서 받은 purchase 오브젝트를 전달하는 것을 권장하며, 이 경우 두 가지 장점이 있습니다.

  • Singular가 보다 자세한 리포트를 제공하는데 필요한 여러 정보가 포함됩니다.
  • Singular에서 Google의 구매 영수증을 받을 수 있어 백엔드에서 구매를 검증하는데 활용하고 어트리뷰션 프러드 룰에 사용할 수 있습니다.

이벤트 리포팅에는 revenuecustomRevenue 메서드를 사용합니다. 이 중 CustomRevenue를 사용하면 매출 이벤트에 커스텀 이름을 추가할 수 있고 Singular 리포트에서 여러 가지 매출 이벤트 유형을 분류해서 볼 수 있습니다.

주의: 매출을 여러 다른 통화 단위로 보내더라도 데이터 확인 시에는 Singular 계정에 설정한 고객사의 통화 단위로 자동으로 변환되어 표시됩니다.

Singular.revenue 메서드
정의 추가 정보를 포함하여 Singular에 매출 이벤트 전송
메서드 Singular.revenue(String currency, double amount, Object purchase) 주의:
  • Purchase 타입의 오브젝트를 전달하지 않으면 Singular에서 영수증 정보를 포함할 수 없습니다.
  • 통화(currency)는 세 글자로 이뤄진 ISO 4217 통화 코드를 사용합니다. 예: “USD”, “EUR”, “KRW”
사용예
// Singular에 purchase 오브젝트를 포함하여 매출 이벤트 전송
// purchase는 Google 빌링 라이브러리에서 획득한 오브젝트 사용 
Singular.revenue("USD", 5.50, purchase);
Singular.customRevenue 메서드
정의 추가 정보를 포함하여 Singular에 매출 이벤트를 커스텀 이름으로 전송
메서드 Singular.customRevenue(String eventName, String currency, double amount, Object purchase) 주의:
  • Purchase 타입의 오브젝트를 전달하지 않으면 Singular에서 영수증 정보를 포함할 수 없습니다.
  • 통화(currency)는 세 글자로 이뤄진 ISO 4217 통화 코드를 사용합니다. 예: “USD”, “EUR”, “KRW”
사용예
// purchase 오브젝트를 포함하여 커스텀 매출 이름으로
// 매출 이벤트 전송
Singular.customRevenue("MyCustomRevenue", "USD", 
   5.50, purchase)

Purchase 오브젝트 없이 매출 이벤트 전송

앞서 설명한 매출 이벤트 전송 방식의 사용을 권장하지만, purchase 오브젝트를 전달하지 않는 방식의 revenue customRevenue를 사용할 수도 있습니다. 이 경우 트랜잭션의 통화 단위와 매출액, 그리고 추가적인 프로덕트 정보를 전달할 수 있습니다.

이 방식으로 매출 이벤트를 리포팅하는 경우 Singular에서 구매 영수증을 받을 수 없어 트랜잭션을 검증할 수 없음에 유의하세요.

더 알아보기
Singular.revenue 메서드 (Purchase 오브젝트 미포함)
정의 Purchase 오브젝트 없이 Singular에 매출 이벤트 전송
메서드 Singular.revenue(String currency, double amount, String productSKU, String productName, String productCategory, int productQuantity, double productPrice)
Singular.revenue(String currency, double amount) 주의: 통화(currency)는 세 글자로 이뤄진 ISO 4217 통화 코드를 사용합니다. 예: “USD”, “EUR”, “KRW”
사용예
// 프로덕트 세부 사항을 포함하여 Singular에 매출 이벤트 전송
Singular.revenue("EUR", 5.00, "SKU1928375", "Reservation Fee", 
   "Fee" , 1, 5.00);
// 프로덕트 세부 사항을 포함하지 않고 Singular에 매출 이벤트 전송
Singular.revenue("USD", 5.50);
Singular.customRevenue 메서드 (Purchase 오브젝트 미포함)
정의 Purchase 오브젝트 없이 Singular에 커스텀 이름으로 매출 이벤트 전송
메서드 Singular.customRevenue(String eventName, String currency, double amount, String productSKU, String productName, String productCategory, int productQuantity, double productPrice)
Singular.customRevenue(String currency, double amount)
주의: 통화(currency)는 세 글자로 이뤄진 ISO 4217 통화 코드를 사용합니다. 예: “USD”, “EUR”, “KRW”
 
// 프로덕트 세부 정보를 포함하여 커스텀 매출 이름으로 매출 이벤트 전송
Singular.customRevenue("MyCustomRevenue", "EUR", 5.00, "SKU1928375", 
   "Reservation Fee", "Fee" , 1, 5.00);
// 프로덕트 세부 정보를 포함하지 않고 커스텀 매출 이름으로 매출 이벤트 전송 Singular.customRevenue("MyCustomRevenue", "USD", 5.50);