이벤트란 게임 설치, 게임 업데이트, 아이템 구매와 같이 유저가 게임을 플레이하면서 수행하는 모든 활동입니다. 이러한 이벤트 로그를 모아 서버에 전송하면 유저 활동을 추적할 수 있고 이를 분석해 다양하게 활용할 수 있습니다. 예를 들어, 게임내에서 발생하는 레벨업, 아이템 강화와 같은 이벤트를 추적하여 유저 행동을 예측할 수 있으며 게임을 더 재밌게 즐길 수 있도록 유도할 수 있습니다.
마케팅 어트리뷰션
여러분의 앱에 유저가 진입하는 경로와 유저 활동을 추적하는 서드 파티(Third party) 모바일 앱 어트리뷰션을 Hive와 함께 사용할 수 있습니다. Hive SDK가 제공하는 서드 파티 모바일 앱 어트리뷰션은 Adjust와 Singular, AppsFlyer, Firebase Analytics 네 가지입니다.
서드 파티 어트리뷰션 활성화하기
Hive API를 이용하여 서드 파티 어트리뷰션을 활성화하거나 비활성화할 수 있습니다. 서드 파티 어트리뷰션을 활성화·비활성화하려면 Analytics API의 setEnableTracker() 함수를 호출하세요. 함수의 첫 번째 파라미터로는 활성화·비활성화하고자 하는 어트리뷰션을 다음과 같이 안내된 문자열로 정의하세요:
- Adjust:
ADJUST
- Singular:
SINGULAR
- AppsFlyer:
APPSFLYER
- Firebase:
FIREBASE
다음은 특정 어트리뷰션을 비활성화하는 예제 코드입니다.
API Reference: hive.Analytics.setEnableTracker
1 2 3 4 5 |
using hive; String trackerName = "ADJUST"; Analytics.setEnableTracker(trackerName, false); |
API Reference: Analytics::setEnableTracker
1 2 3 4 5 6 7 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; string trackerName = "ADJUST"; Analytics::setEnableTracker(trackerName, false); |
API Reference: Analytics.setEnableTracker
1 2 3 4 5 |
import com.hive.Analytics val trackerName = "ADJUST" Analytics.setEnableTrackerWithName(trackerName, false) |
API Reference: com.hive.Analytics.setEnableTracker
1 2 3 4 5 |
import com.hive.Analytics; String trackerName = "ADJUST"; Analytics.INSTANCE.setEnableTrackerWithName(trackerName, false); |
API Reference: AnalyticsInterface.setEnableTracker
1 2 3 4 5 |
import HIVEService let trackerName = "ADJUST" AnalyticsInterface.setEnableTracker(name: trackerName, enable: false) |
API Reference: HIVEAnalytics:setEnableTracker
1 2 3 4 5 |
#import <HIVEService/HIVEService-Swift.h> NSString *trackerName = @"ADJUST"; [HIVEAnalytics setEnableTrackerWithName: trackerName enable: NO]; |
Steam Appsflyer 적용하기
Windows 환경에서 Steam Appsflyer를 적용하려면 다음 안내를 따르세요.
- Appsflyer Steam을 다운로드합니다.
- 다운로드 받은 파일의 압축을 해제합니다.
- 압축을 해제한 Appsflyer.dll 파일을 {게임 앱 실행 파일 경로}/plugins/trackers에 넣습니다.
이벤트 자동 추적
Hive SDK에서는 Install(앱 설치), Open(앱 오픈), Update(앱 업데이트), Purchase(인앱 구매)의 4개 이벤트를 자동으로 추적하여 각 어트리뷰션으로 전송할 수 있습니다. 게임사는 이 4개 이벤트 추적을 위한 코드를 구현할 필요가 없습니다.
Adjust로 이벤트 자동으로 추적하기
- 필요한 토큰을 발급받습니다. 토큰 발급 방법에 대해서는 Adjust에서 제공하는 대시보드 안내를 참고하세요.
- Purchase, Update 이벤트를 자동 추적하려면 Adjust 대시보드에 이벤트를 등록하고 앱 토큰과 이벤트 토큰을 얻어야 합니다. 앱 토큰은 대시보드 메인에서, 이벤트 토큰은 대시보드 > All Settings > Events에서 확인합니다.
- Install, Open 이벤트 자동 추적은 토큰 발급이 필요하지 않습니다.
- 토큰들을 hive_config.xml에 추가합니다.
- 앱 토큰, Purchase 이벤트 토큰, Update 이벤트 토큰을 hive_config.xml에 추가합니다. 아래 예제 코드를 참고하세요.
- Install, Open 이벤트 자동 추적은 hive_config.xml 설정이 필요하지 않습니다.
- Adjust 대시보드에서는 앱 스푸핑 방지를 위한 SDK Signature 기능을 제공합니다. 관련 기능을 사용하려면 Adjust와의 계약 사항을 확인해야 합니다. 관련 기능을 사용하려면 키를 발급받아 hive_config.xml
secretId
,info1
,info2
,info3
,info4
에 추가하세요.
12345678910111213<providers><!-- (코드 생략) --><!-- Adjust 노드 id 필드는 설정하지 않습니다. --><!-- Adjust 노드 name 필드는 "Adjust" 고정값입니다. --><!-- event 노드 name 필드는 게임사에서 임의로 설정합니다. --><Adjust name="Adjust" id="unused" key="APP_TOKEN" secretId="1" info1="5432112345" info2="334123" info3="555333" info4="111333"><events><event name="Purchase" value="PURCHASE_EVENT_TOKEN" /><event name="Update" value="UPDATE_EVENT_TOKEN" /></events><!-- (코드 생략) --></Adjust></providers>
Singular, Appsflyer, Firebase Analytics로 이벤트 자동으로 추적하기
- 각 어트리뷰션 대시보드에서 키를 발급받습니다. 키 발급 방법에 대해서는 각 어트리뷰션에서 제공하는 대시보드 안내를 참고하세요.
- Singular: 대시보드에서 SDK Key와 SDK SecretKey를 받습니다.
- Appsflyer: 대시보드 > 앱 설정에서 Dev 키를 받습니다.
- Firebase Analytics: 키 발급이 필요하지 않습니다.
- 아래 안내를 따라 hive_config.xml에 설정합니다. 아래 예제 코드를 참고하세요.
- Install: 별도 설정이 필요하지 않습니다.
- Open: Firebase Analytics 어트리뷰션만 설정이 필요합니다.
- Update: Singular, Appsflyer, Firebase Analytics 모두 설정을 추가합니다.
- Purchase: Singular, Firebase Analytics만 설정을 추가합니다.
- Hive SDK iOS(Native, Unity, Unreal)에서 AppsFlyer 어트리뷰션을 사용할 경우, Apple AppID 설정을 위해
itunseConnectAppId
값을 설정합니다.
12345678910111213141516171819202122232425262728293031<providers><!-- Singular 설정하기 --><!-- Singular 노드 name 필드는 "Singular" 고정값입니다. --><!-- event 노드 name, value 필드는 게임사에서 임의로 설정합니다. --><Singular name="Singular" id="SDK_KEY" key="SDK_SECRET_KEY"><events><event name="Purchase" value="purchase"/><event name="Update" value="update" /></events></Singular><!-- AppsFlyer 설정하기 --><!-- AppsFlyer 노드 name 필드는 "AppsFlyer" 고정값입니다. --><!-- AppsFlyer 노드 id 필드는 설정하지 않습니다. --><!-- event 노드 name, value 필드는 게임사에서 임의로 설정합니다. --><AppsFlyer name="AppsFlyer" id="unused" key="DEV_KEY" itunseConnectAppId="909923112"><events><event name="Update" value="Update" /></events></AppsFlyer><!-- Firebase Analytics 설정하기 --><!-- event 노드 name, value 필드는 게임사에서 임의로 설정합니다. --><firebase><events><event name="Purchase" value="purchase"/><event name="Open" value="open"/><event name="Update" value="update"/></events></firebase></providers>
결제 이벤트 발생 시 전송 정보
Hive IAP로 결제를 하면 서드 파티 모바일 앱 어트리뷰션에 자동으로 결제 이벤트를 전송합니다. 이 때 전송하는 정보는 아래와 같습니다.
EVENT NAME | PARAMETER | 비고 | |
---|---|---|---|
Adjust | Purchase |
|
|
Singular | __iap__ |
|
|
AppsFlyer | Purchase |
|
|
Firebase Analytics | Purchase |
|
|
이벤트 수동 추적
Hive SDK에서는 자동으로 추적하는 이벤트(Install, Open, Update, Purchase) 외에도 필요한 이벤트를 각 어트리뷰션 대시보드에 등록하여 수동으로 추적할 수 있습니다. 예를 들어 게임 튜토리얼 완료 시(TutorialComplete) 또는 특정 미션 달성 시(MissionClear)와 같이 특정한 상황을 추적할 수 있습니다. 이벤트 수동 추적은 이벤트 자동 추적 설정을 완료한 다음에 진행해야 합니다.
Adjust로 이벤트 수동으로 추적하기
- 원하는 커스텀 이벤트를 Adjust 대시보드에 등록하고 앱 토큰과 이벤트 토큰을 얻어야 합니다. 앱 토큰은 대시보드 메인에서, 이벤트 토큰은 대시보드 > All Settings > Events에서 확인합니다. 토큰 발급 방법에 대해서는 Adjust에서 제공하는 대시보드 안내를 참고하세요.
- 앱 토큰과 이벤트 토큰을 hive_config.xml에 추가합니다. 아래 예제 코드를 참고하세요.
- Adjust 대시보드에서는 앱 스푸핑 방지를 위한 SDK Signature 기능을 제공합니다. 관련 기능을 사용하려면 Adjust와의 계약 사항을 확인해야 합니다. 관련 기능을 사용하려면 키를 발급받아 hive_config.xml
secretId
,info1
,info2
,info3
,info4
에 추가하세요.
12345678910111213<providers><!-- (코드 생략) --><!-- Adjust 노드 id 필드는 설정하지 않습니다. --><!-- Adjust 노드 name 필드는 "Adjust" 고정값입니다. --><!-- event 노드 name 필드는 게임사에서 임의로 설정합니다. 단, sendEvent() 호출을 위해 다른 어트리뷰션에서도 동일한 값을 사용해야 합니다.--><Adjust name="Adjust" id="unused" key="APP_TOKEN" secretId="1" info1="5432112345" info2="334123" info3="555333" info4="111333"><events><event name="TutorialComplete" value="TutorialComplete_EVENT_TOKEN" /><event name="MissionClear" value="MissionClear_EVENT_TOKEN" /></events><!-- (코드 생략) --></Adjust></providers> - Analytics API sendEvent()를 호출하여 이벤트를 전송합니다. 이벤트 전송 시 hive_config.xml에 추가한
event name
을 사용합니다.name
은 API 호출 시 파라미터로 사용하며value
는 각 어트리뷰션의 대시보드에서 확인할 수 있습니다.Analytics.sendEvent("TutorialComplete");
Analytics.sendEvent("MissionClear");
Singular, Appsflyer, Firebase Analytics로 이벤트 수동으로 추적하기
- 각 어트리뷰션 대시보드에서 키를 발급받습니다. 키 발급 방법에 대해서는 각 어트리뷰션에서 제공하는 대시보드 안내를 참고하세요.
- Singular: 대시보드에서 SDK Key와 SDK SecretKey를 받습니다.
- Appsflyer: 대시보드 > 앱 설정에서 Dev 키를 받습니다.
- Firebase Analytics: 키 발급이 필요하지 않습니다.
- 아래 안내를 따라 hive_config.xml에 설정합니다. 아래 예제 코드를 참고하세요. Hive SDK iOS(Native, Unity, Unreal)에서 AppsFlyer 어트리뷰션을 사용할 경우, Apple AppID 설정을 위해
itunseConnectAppId
값을 설정합니다.
12345678910111213141516171819202122232425262728293031323334<providers><!-- Singular 설정하기 --><!-- Singular 노드 name 필드는 "Singular" 고정값입니다. --><!-- event 노드 name 필드는 게임사에서 임의로 설정합니다. 단, sendEvent() 호출을 위해 다른 어트리뷰션에서도 동일한 값을 사용해야 합니다.--><!-- event 노드 value 필드는 게임사에서 임의로 설정합니다. --><Singular name="Singular" id="SDK_KEY" key="SDK_SECRET_KEY"><events><event name="TutorialComplete" value="Tutorial Complete" /><event name="MissionClear" value="Mission Clear" /></events></Singular><!-- AppsFlyer 설정하기 --><!-- AppsFlyer 노드 name 필드는 "AppsFlyer" 고정값입니다. --><!-- AppsFlyer 노드 id 필드는 설정하지 않습니다. --><!-- event 노드 name 필드는 게임사에서 임의로 설정합니다. 단, sendEvent() 호출을 위해 다른 어트리뷰션에서도 동일한 값을 사용해야 합니다.--><!-- event 노드 value 필드는 게임사에서 임의로 설정합니다. --><AppsFlyer name="AppsFlyer" id="unused" key="DEV_KEY" itunseConnectAppId="909923112"><events><event name="TutorialComplete" value="Tutorial Complete" /><event name="MissionClear" value="Mission Clear" /></events></AppsFlyer><!-- Firebase Analytics 설정하기 --><!-- event 노드 name 필드는 게임사에서 임의로 설정합니다. 단, sendEvent() 호출을 위해 다른 어트리뷰션에서도 동일한 값을 사용해야 합니다.--><!-- event 노드 value 필드는 게임사에서 임의로 설정합니다. --><firebase><events><event name="TutorialComplete" value="TutorialComplete" /><event name="MissionClear" value="MissionClear" /></events></firebase></providers> - Analytics API sendEvent()를 호출하여 이벤트를 전송합니다. 이벤트 전송 시 hive_config.xml에 추가한
event name
을 사용합니다.name
은 API 호출 시 파라미터로 사용하며value
는 각 어트리뷰션의 대시보드에서 확인할 수 있습니다.Analytics.sendEvent("TutorialComplete");
Analytics.sendEvent("MissionClear");
sendEvent()로 이벤트 전송하기
유저의 행동을 추적할 때 모든 행동을 추적하기 보다는 유저의 행동이 특정 조건을 만족시켰을 때 (예. 튜토리얼 완료) 어트리뷰션에 추적 이벤트를 전송하기를 권장합니다. 유저 행동 추적 이벤트를 전송하려면 Analytics API의 sendEvent()
함수를 호출하세요. sendEvent()
함수의 첫 번째 파라미터 값으로는 hive_config.xml 설정 파일에 정의한 <event>
요소의 name
속성 값을 입력하세요.
다음은 유저가 튜토리얼을 완료했다는 것을 알리기 위한 TutorialComplete 이벤트를 마케팅 어트리뷰션에 전송하는 예제 코드입니다.
API Reference: hive.Analytics.sendEvent
1 2 3 4 5 |
using hive; String eventName = "TutorialComplete"; Analytics.sendEvent(eventName); |
API Reference: Analytics::sendEvent
1 2 3 4 5 6 7 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; string eventName = "TutorialComplete"; Analytics::sendEvent(eventName); |
API Reference: Analytics.sendEvent
1 2 3 4 |
import com.hive.Analytics val eventName = "TutorialComplete" Analytics.sendEvent(eventName) |
API Reference: com.hive.Analytics.sendEvent
1 2 3 4 |
import com.hive.Analytics; String eventName = "TutorialComplete"; Analytics.INSTANCE.sendEvent(eventName); |
API Reference: AnalyticsInterface.sendEvent
1 2 3 4 5 |
import HIVEService let eventName = "TutorialComplete" AnalyticsInterface.sendEvent(eventName) |
API Reference: HIVEAnalytics:sendEvent
1 2 3 4 5 |
#import <HIVEService/HIVEService-Swift.h> NSString eventName = @"TutorialComplete"; [HIVEAnalytics sendEvent: eventName]; |
광고 매출과 노출 정보 전송하기
게임에서 광고가 노출될 때 광고 플랫폼 종류, 광고 노출 위치, 노출 시점, 노출당 광고 수익 등을 측정하여 서드 파티 어트리뷰션으로 전송할 수 있습니다. 이러한 광고 매출, 노출 정보를 전송하려면 Analytics API의 sendAdRevenueEvent()
함수를 호출하세요. 다음은 광고 노출 정보를 마케팅 어트리뷰션에 전송하는 예제 코드입니다.
1 2 3 4 5 6 7 8 9 10 |
// 서드파티 어트리뷰션에 광고 매출 측정 이벤트 전송 AnalyticsAdRevenue analyticsAdRevenue = new AnalyticsAdRevenue(); analyticsAdRevenue.revenue = 3.0; // 광고 수익 analyticsAdRevenue.adPlatform = "AD Platform"; // 광고 네트워크 플랫폼 이름 analyticsAdRevenue.adUnitId = "Test Unit Id"; // 광고 유닛 아이디 analyticsAdRevenue.adType = "RewardedAD"; // 광고 노출 타입 analyticsAdRevenue.adPlacement = "Test Rewarded AD"; // 광고 노출 위치 analyticsAdRevenue.currency = "USD"; // 통화 코드 (ISO 4217 표준) Analytics.sendAdRevenueEvent(analyticsAdRevenue); |
1 2 3 4 5 6 7 8 9 10 |
// 서드파티 어트리뷰션에 광고 매출 측정 이벤트 전송 AnalyticsAdRevenue analyticsAdRevenue; analyticsAdRevenue.revenue = 3.0; // 광고 수익 analyticsAdRevenue.adPlatform = "AD Platform"; // 광고 네트워크 플랫폼 이름 analyticsAdRevenue.adUnitId = "Test unit id"; // 광고 유닛 아이디 analyticsAdRevenue.adType = "RewardedAD"; // 광고 노출 타입 analyticsAdRevenue.adPlacement = "Test Rewarded AD"; // 광고 노출 위치 analyticsAdRevenue.currency = "USD"; // 통화 코드 (ISO 4217 표준) Analytics::sendAdRevenueEvent(analyticsAdRevenue); |
1 2 3 4 5 6 7 8 9 10 |
// 서드파티 어트리뷰션에 광고 매출 측정 이벤트 전송 AnalyticsImpl.AnalyticsAdRevenue analyticsAdRevenue = new AnalyticsImpl.AnalyticsAdRevenue(); analyticsAdRevenue.setRevenue(3.0); // 광고 수익 analyticsAdRevenue.setAdPlatform("AD Platform"); // 광고 네트워크 플랫폼 이름 analyticsAdRevenue.setAdUnitId("Test Unit Id"); // 광고 유닛 아이디 analyticsAdRevenue.setAdType("RewardedAD"); // 광고 노출 타입 analyticsAdRevenue.setAdPlacement("Test Rewarded AD"); // 광고 노출 위치 analyticsAdRevenue.setCurrency("USD"); // 통화 코드 (ISO 4217 표준) com.hive.Analytics.INSTANCE.sendAdRevenueEvent(analyticsAdRevenue); |
1 2 3 4 5 6 7 8 9 10 |
// 서드파티 어트리뷰션에 광고 매출 측정 이벤트 전송 var analyticsAdRevenue: AnalyticsImpl.AnalyticsAdRevenue = AnalyticsImpl.AnalyticsAdRevenue() analyticsAdRevenue.revenue = 3.0 // 광고 수익 analyticsAdRevenue.adPlatform = "AD Platform" // 광고 네트워크 플랫폼 이름 analyticsAdRevenue.adUnitId = "Test Unit Id" // 광고 유닛 아이디 analyticsAdRevenue.adType = "RewardedAD" // 광고 노출 타입 analyticsAdRevenue.adPlacement = "Test Rewarded AD" // 광고 노출 위치 analyticsAdRevenue.currency = "USD" // 통화 코드 (ISO 4217 표준) Analytics.sendAdRevenueEvent(analyticsAdRevenue) |
1 2 3 4 5 6 7 8 9 10 |
// 서드파티 어트리뷰션에 광고 매출 측정 이벤트 전송 HIVEAnalyticsAdRevenue* adRevenue = [[HIVEAnalyticsAdRevenue alloc] init]; adRevenue.revenue = 3.0; // 광고 수익 adRevenue.adPlatform = "AD Platform"; // 광고 네트워크 플랫폼 이름 adRevenue.adUnitId = "Test Unit Id"; // 광고 유닛 아이디 adRevenue.adType = "RewardedAD"; // 광고 노출 타입 adRevenue.adPlacement = "Test Rewarded AD"; // 광고 노출 위치 adRevenue.currency = ""; // 통화 코드 (ISO 4217 표준) [HIVEAnalytics sendAdRevenueEvent:adRevenue]; |
1 2 3 4 5 6 7 8 9 10 |
// 서드파티 어트리뷰션에 광고 매출 측정 이벤트 전송 let analyticsAdRevenue = AnalyticsAdRevenue() analyticsAdRevenue.revenue = 3.0 // 광고 수익 analyticsAdRevenue.adPlatform = "AD Platform" // 광고 네트워크 플랫폼 이름 analyticsAdRevenue.adUnitId = "AD Unit Id" // 광고 유닛 아이디 analyticsAdRevenue.adType = "AD Type" // 광고 노출 타입 analyticsAdRevenue.adPlacement = "AD Placement" // 광고 노출 위치 analyticsAdRevenue.currency = "USD" // 통화 코드 (ISO 4217 표준) AnalyticsInterface.sendAdRevenueEvent(analyticsAdRevenue) |
광고 노출 정보
광고 노출 정보 전송 시 서드 파티 모바일 앱 어트리뷰션에 전송하는 정보는 아래와 같습니다.
Adjust | Singular | AppsFlyer | Firebase Analytics | |
---|---|---|---|---|
PARAMETER |
|
|
|
|
참고: 서비스별 요소 속성
Name | Description |
---|---|
name | 서드 파티 어트리뷰션 이름. 태그 이름과 동일
|
id | 서드 파티 어트리뷰션 대시보드에서 발급한 게임 AppID 예. "5725" |
key | 서드 파티 어트리뷰션 대시보드에서 발급한 게임 앱에 대한 키
예. |
secretId | Adjust에서 사용하는 특수값으로 Adjust 계약 사항 확인 필요 |
info1 | Adjust에서 사용하는 특수값으로 Adjust 계약 사항 확인 필요 |
info2 | Adjust에서 사용하는 특수값으로 Adjust 계약 사항 확인 필요 |
info3 | Adjust에서 사용하는 특수값으로 Adjust 계약 사항 확인 필요 |
info4 | Adjust에서 사용하는 특수값으로 Adjust 계약 사항 확인 필요 |
itunseConnectAppId | AppsFlyer에서 사용 (iOS) |
<event> 요소 속성
Name | Description |
---|---|
name | 서드 파티 어트리뷰션 대시보드에 등록한 추적용 이벤트 이름 예. "TutorialComplete" |
value | Hive 클라이언트에서 해당 어트리뷰션으로 전송하는 추적용 이벤트 값
예. |