iOS SDK: 이벤트 및 매출 트래킹

Singular iOS SDK
다운로드 Singular iOS SDK version 11.0.0
호환성 iOS 8+
샘플 앱

Singular SDK를 전체적으로 연동한 샘플 앱을 확인해주세요. 베스트 프랙티스에 기반하여 여러 연동 부분이 어떻게 결합될 수 있는지 확인하세요.

연동 가이드

 

이벤트 트래킹

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

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

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

주의:

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

Objective-C:

[Singular event:@"login"];

Swift  (bridging header 필요):

Singular.event("login")
eventWithArgs 메서드
정의 트래킹을 위해 이벤트를 추가 정보를 포함하여 Singular로 전송
메서드 +(void)eventWithArgs:(NSString *)name, ...
사용예

Objective-C:

// 유저가 제품을 본 행동에 대한 이벤트를 전송
// 제품 시리얼 넘버와 가격을 세부 정보에 포함한 예제
[Singular eventWithArgs:@"viewItem",
   @"sku", @"12345",
   @"price", [NSNumber numberWithDouble:123.45], nil];

Swift (requires bridging header):

// 유저가 제품을 본 행동에 대한 이벤트를 전송
// 제품 시리얼 넘버와 가격을 세부 정보에 포함한 예제 
Singular.event("viewItem", withArgs: ["sku": "12345",
"price": "12345"])
event 메서드 (NSDictionary 형식의 아규먼트 포함)
정의 NSDictionary 오브젝트 추가 정보를 포함하여 이벤트를 Singular로 전송
메서드 + (void) event:(NSString *)name withArgs:(NSDictionary *)args;
사용예

Objective-C:

// 장바구니 업데이트 이벤트를 Singular에 전송
// NSDictionary로 된 아이템 세부 사항을 포함하는 예제

// 먼저 장바구니 내의 아이템 각각을 설정
NSDictionary *item1 = [NSDictionary 
dictionaryWithObjectsAndKeys: @"UPC-018627610014", @"sku", [NSNumber numberWithInt:2], @"qty", [NSNumber numberWithDouble:8.99], @"unit_price", @"USD", @"currency", nil]; NSDictionary *item2 = [NSDictionary
dictionaryWithObjectsAndKeys: @"UPC-070271003758", @"sku", [NSNumber numberWithInt:1], @"qty", [NSNumber numberWithDouble:15.99], @"unit_price", @"USD", @"currency", nil]; NSDictionary *item3 = [NSDictionary
dictionaryWithObjectsAndKeys: @"ISBN13-978-0-596-51774-8", @"sku", [NSNumber numberWithInt:1], @"qty", [NSNumber numberWithDouble:29.99], @"unit_price", @"USD", @"currency", nil]; // 아이템들을 contents 어레이로 묶음(선택 사항) NSArray *contents = [NSArray arrayWithObjects:item1,
item2, item3, nil]; // 장바구니 이벤트에 아이템 어레이를 contents라는 키 값에 포함 // 주의: 간결성 유지를 위해 예시에서는 총 금액을 하드코딩 했으나 // 실제로는 합계를 계산해서 넣는 것이 일반적 NSDictionary *args = [NSDictionary
dictionaryWithObjectsAndKeys:contents, @"contents", [NSNumber numberWithDouble:63.96], @"total", @"USD", @"currency", @"A556740089", @"member_id", nil]; // Singular에 이벤트 전송 [Singular event:@"cart" withArgs:args];

Swift:

// 장바구니 업데이트 이벤트를 Singular에 전송
// NSDictionary로 된 아이템 세부 사항을 포함하는 예제

// 먼저 장바구니 내의 아이템 각각을 설정
let item1:[String:Any] = ["sku":"UPC-018627610014","qty":2, "unit_price":8.99, "currency":"USD"]
let item2:[String:Any] = ["sku":"UPC-070271003758","qty":1, "unit_price":15.99, "currency":"USD"]
let item3:[String:Any] = ["sku":"ISBN13-978-0-596-51774-8","qty":1, "unit_price":29.99, "currency":"USD"]

// 아이템들을 contents 어레이로 묶음(선택 사항)
let contents = [item1, item2, item3]

// 장바구니 이벤트에 아이템 어레이를 contents라는 키 값에 포함
// 주의: 간결성 유지를 위해 예시에서는 총 금액을 하드코딩 했으나
// 실제로는 합계를 계산해서 넣는 것이 일반적
let args:[String:Any] = ["contents":contents, "total":63.96, "currency":"USD", "member_id":"A556740089"]

// Singular에 이벤트 전송
Singular.event("cart", withArgs:args)

매출 트래킹

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

Singular에 매출 이벤트를 보내는 경우 iapComplete SDK 메서드 사용을 권장하며, 이 경우 Apple의 인앱구매인 IAP 매출 이벤트를 Singular에 보냅니다. 여기에는 다음 두 항목이 포함됩니다.

  • 전체 트랜잭션 세부 사항: Singular가 보다 자세한 리포트를 제공하는데 필요한 여러 정보가 포함됩니다.
  • 트랜잭션 영수증: Singular에서 백엔드에서 구매를 검증하는데 활용하고 프러드 방지에 사용할 수 있습니다.

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

iapComplete 메서드
정의 트랜잭션 영수증을 포함하여 Singular에 매출 이벤트 전송
메서드 (void)iapComplete:(id)transaction
(void)iapComplete:(id)transaction withName:(NSString *)name;
사용예

Objective-C:

SKPaymentTransaction* transaction = ...;

// 트랜잭션 이벤트를 Singular에 전송
[Singular iapComplete:transaction];

// 커스텀 매출 이벤트 이름을 사용해서
// 트랜잭션 이벤트를 Singular에 전송
[Singular iapComplete:transaction
withName:@"MyCustomRevenue"];

Swift:

let transaction:SKPaymentTransaction = ...

// 트랜잭션 이벤트를 Singular에 전송 Singular.iapComplete(transaction) // 커스텀 매출 이벤트 이름을 사용해서 // 트랜잭션 이벤트를 Singular에 전송 Singular.iapComplete(transaction, withName:"MyCustomRevenue")

다른 방식으로 매출 이벤트 리포팅

앞서 설명한 iapComplete로 매출 이벤트를 전송하기를 권장하지만, 다른 방식으로 매출 이벤트를 전송하고자 하는 경우 revenue customRevenue를 사용할 수도 있습니다.

더 알아보기

다음에서 설명하는 메서드를 사용하면 트랜잭션 금액과 통화 단위를 수동으로 특정할 수 있고 추가적인 세부 사항도 선택적으로 전송할 수 있습니다. customRevenue를 사용하면 커스텀 매출 이벤트 이름도 지정할 수 있습니다.

단, 두 메서드 모두 트랜잭션 영수증을 전송하지 않으므로 Singular에서 트랜잭션을 검증할 수 없습니다.

revenue 메서드
정의 금액과 통화 단위 및 추가적인 세부 사항을 포함하여 Singular에 매출 이벤트 전송
메서드 (void)revenue:(NSString *)currency amount:(double)amount;
(void)revenue:(NSString *)currency amount:(double)amount productSKU:(NSString *)productSKU productName:(NSString *)productName productCategory:(NSString *)productCategory productQuantity:(int)productQuantity productPrice:(double)productPrice;

주의: 통화(currency)는 세 글자로 이뤄진 ISO 4217 통화 코드를 사용합니다. 예: “USD”, “EUR”, “KRW”

사용예

Objective-C:

// 프로덕트 세부 사항을 포함하지 않고 Singular에 매출 이벤트 전송

[Singular revenue:@"USD" amount:1.99];

// 프로덕트 세부 사항을 포함하여 Singular에 매출 이벤트 전송
[Singular revenue:@"EUR" amount:5.00 productSKU:@"SKU1928375"
productName:@"Reservation Fee" productCategory:@"Fee"
productQuantity:1 productPrice:5.00];

Swift:

// 프로덕트 세부 사항을 포함하지 않고 Singular에 매출 이벤트 전송

Singular.revenue("USD",amount:1.99)

// 프로덕트 세부 사항을 포함하여 Singular에 매출 이벤트 전송
Singular.revenue("EUR",amount:5.00, productSKU:"SKU1928375", 
productName:"Reservation Fee",productCategory:"Fee",
productQuantity:1, productPrice:5.00)
customRevenue 메서드
정의 금액과 통화 단위 및 추가적인 세부 사항을 포함하여 Singular에 커스텀 이름으로 매출 이벤트 전송
메서드 (void)customRevenue:(NSString *)eventName currency:(NSString *)currency amount:(double)amount;
(void)customRevenue:(NSString *)eventName currency:(NSString *)currency amount:(double)amount productSKU:(NSString *)productSKU productName:(NSString *)productName productCategory:(NSString *)productCategory productQuantity:(int)productQuantity productPrice:(double)productPrice;

주의: 통화(currency)는 세 글자로 이뤄진 ISO 4217 통화 코드를 사용합니다. 예: “USD”, “EUR”, “KRW”

사용예

Objective-C:

// 프로덕트 세부 사항을 포함하지 않고 Singular에 커스텀 이름으로 매출 이벤트 전송
[Singular customRevenue:@"MyCustomRevenue" currency:@"USD"
amount:1.99]; // 프로덕트 세부 사항을 포함하여 Singular에 커스텀 이름으로 매출 이벤트 전송 [Singular customRevenue:@"MyCustomRevenue" currency:@"EUR"
amount:5.00 productSKU:@"SKU1928375"
productName:@"Reservation Fee" productCategory:@"Fee"
productQuantity:1 productPrice:5.00];

Swift:

// 프로덕트 세부 사항을 포함하지 않고 Singular에 커스텀 이름으로 매출 이벤트 전송
Singular.customRevenue("MyCustomRevenue", currency:"USD", 
amount:1.99) // 프로덕트 세부 사항을 포함하여 Singular에 커스텀 이름으로 매출 이벤트 전송 Singular.customRevenue("MyCustomRevenue", currency:"EUR",
amount:5.00, productSKU:"SKU1928375",
productName:"Reservation Fee", productCategory:"Fee",
productQuantity:1, productPrice:5.00)
도움이 되었습니까?