Game : 게임

게임 앱에서 측정을 권장하는 인앱 이벤트 API와 적용 예시를 안내합니다.
속성 중 Key 이름은 가이드에 나와있는 Key 이름을 그대로 사용 해 주세요. (임의로 변경시 대시보드에서 데이터 확인이 어렵습니다. > level , item_id 등)

캐릭터 생성

캐릭터 생성이 완료되는 시점에 아래 코드를 추가합니다.

선택 속성

Key
Value 예시
Type
설명
character_type
archer
string
게임 캐릭터 유형 정보
character_name
RAiNFiRE
string
게임 캐릭터 명칭 정보
Java
Kotlin
Swift
Objective-C
Mobile Webview
Website
Flutter
ReactNative
C#
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_create_character");
eventMap.put("character_type", "archer");
eventMap.put("character_name", "RAiNFiRE");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_create_character"
eventMap["character_type"] = "archer"
eventMap["character_name"] = "RAiNFiRE"
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_create_character"
event["character_type"] = "archer"
event["character_name"] = "RAiNFiRE"
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_create_character" forKey:@"event"];
[event setValue:@"archer" forKey:@"character_type"];
[event setValue:@"RAiNFiRE" forKey:@"character_name"];
[DOT logEvent:event];
<script type="wisetracker/text" id="wiseTracker2">
var event = new Object();
event["event"] = "w_create_character";
event["character_type"] = "archer";
event["character_name"] = "RAiNFiRE";
DOT.logEvent(event);
</script>
<script type="text/javascript">
var event = new Object();
event["event"] = "w_create_character";
event["character_type"] = "archer";
event["character_name"] = "RAiNFiRE";
WDOT.logEvent(event);
</script>
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_create_character";
event["character_type"] = "archer";
event["character_name"] = "RAiNFiRE";
DOT.logEvent(event);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_create_character",
character_type : "archer",
character_name : "RAiNFiRE"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_create_character",
character_type : "archer",
character_name : "RAiNFiRE"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_create_character",
character_type : "archer",
character_name : "RAiNFiRE"
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_create_character");
eventDic.Add("character_type", "archer");
eventDic.Add("character_name", "RAiNFiRE");
DOT.logEvent(eventDic);

튜토리얼 시작

튜토리얼이 시작된 시점에 아래 코드를 추가합니다.

선택 속성

Key
Value 예시
Type
설명
tutorial_name
introduction
string
튜토리얼 명칭 또는 ID
Java
Kotlin
Swift
Objective-C
Mobile Webview
Website
Flutter
ReactNative
C#
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_start_tutorial");
eventMap.put("tutorial_name", "introduction");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_start_tutorial"
eventMap["tutorial_name"] = "introduction"
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_start_tutorial"
event["tutorial_name"] = "introduction"
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_start_tutorial" forKey:@"event"];
[event setValue:@"introduction" forKey:@"tutorial_name"];
[DOT logEvent:event];
<script type="wisetracker/text" id="wiseTracker2">
var event = new Object();
event["event"] = "w_start_tutorial";
event["tutorial_name"] = "introduction";
DOT.logEvent(event);
</script>
<script type="text/javascript">
var event = new Object();
event["event"] = "w_start_tutorial";
event["tutorial_name"] = "introduction";
WDOT.logEvent(event);
</script>
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_start_tutorial";
event["tutorial_name"] = "introduction";
DOT.logEvent(event);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_start_tutorial",
tutorial_name : "introduction"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_start_tutorial",
tutorial_name : "introduction"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_start_tutorial",
tutorial_name : "introduction"
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_start_tutorial");
eventDic.Add("tutorial_name", "introduction");
DOT.logEvent(eventDic);

튜토리얼 스킵

튜토리얼이 스킵된 시점에 아래 코드를 추가합니다.

선택 속성

Key
Value 예시
Type
설명
tutorial_name
introduction
string
튜토리얼 명칭 또는 ID
Java
Kotlin
Swift
Objective-C
Mobile Webview
Website
Flutter
ReactNative
C#
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_skip_tutorial");
eventMap.put("tutorial_name", "introduction");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_skip_tutorial"
eventMap["tutorial_name"] = "introduction"
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_skip_tutorial"
event["tutorial_name"] = "introduction"
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_skip_tutorial" forKey:@"event"];
[event setValue:@"introduction" forKey:@"tutorial_name"];
[DOT logEvent:event];
<script type="wisetracker/text" id="wiseTracker2">
var event = new Object();
event["event"] = "w_skip_tutorial";
event["tutorial_name"] = "introduction";
DOT.logEvent(event);
</script>
<script type="text/javascript">
var event = new Object();
event["event"] = "w_skip_tutorial";
event["tutorial_name"] = "introduction";
WDOT.logEvent(event);
</script>
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_skip_tutorial";
event["tutorial_name"] = "introduction";
DOT.logEvent(event);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_skip_tutorial",
tutorial_name : "introduction"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_skip_tutorial",
tutorial_name : "introduction"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_skip_tutorial",
tutorial_name : "introduction"
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_skip_tutorial");
eventDic.Add("tutorial_name", "introduction");
DOT.logEvent(eventDic);

튜토리얼 완료

튜토리얼이 완료된 시점에 아래 코드를 추가합니다.

선택 속성

Key
Value 예시
Type
설명
tutorial_name
introduction
string
튜토리얼 명칭 또는 ID
Java
Kotlin
Swift
Objective-C
Mobile Webview
Website
Flutter
ReactNative
C#
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_finish_tutorial");
eventMap.put("tutorial_name", "introduction");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_finish_tutorial"
eventMap["tutorial_name"] = "introduction"
DOT.logEvent(eventMap)
var event = NSMutableDictionary()
event["event"] = "w_finish_tutorial"
event["tutorial_name"] = "introduction"
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_finish_tutorial" forKey:@"event"];
[event setValue:@"introduction" forKey:@"tutorial_name"];
[DOT logEvent:event];
<script type="wisetracker/text" id="wiseTracker2">
var event = new Object();
event["event"] = "w_finish_tutorial";
event["tutorial_name"] = "introduction";
DOT.logEvent(event);
</script>
<script type="text/javascript">
var event = new Object();
event["event"] = "w_finish_tutorial";
event["tutorial_name"] = "introduction";
WDOT.logEvent(event);
</script>
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_finish_tutorial";
event["tutorial_name"] = "introduction";
DOT.logEvent(event);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_finish_tutorial",
tutorial_name : "introduction"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_finish_tutorial",
tutorial_name : "introduction"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_finish_tutorial",
tutorial_name : "introduction"
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_finish_tutorial");
eventDic.Add("tutorial_name", "introduction");
DOT.logEvent(eventDic);

게임 시작

게임을 시작하는 시점에 아래 코드를 추가합니다.
Java
Kotlin
Swift
Objective-C
Mobile Webview
Website
Flutter
ReactNative
C#
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_start_game");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_start_game"
DOT.logEvent(eventMap)
var event = NSMutableDictionary()
event["event"] = "w_start_game"
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_start_game" forKey:@"event"];
[DOT logEvent:event];
<script type="wisetracker/text" id="wiseTracker2">
var event = new Object();
event["event"] = "w_start_game";
DOT.logEvent(event);
</script>
<script type="text/javascript">
var event = new Object();
event["event"] = "w_start_game";
WDOT.logEvent(event);
</script>
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_start_game";
DOT.logEvent(event);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_start_game"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_start_game"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_start_game"
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_start_game");
DOT.logEvent(eventDic);

레벨 달성

레벨이 상승한 시점에 아래 코드를 추가합니다.

선택 속성

Key
Value 예시
Type
설명
setAttr5
86
string
도달한 레벨
level
86
string
도달한 레벨
g22
1500
float
획득한 점수
Java
Kotlin
Swift
Objective-C
Mobile Webview
Website
Flutter
ReactNative
C#
User user = new User.Builder().setAttr5("86").build();
DOT.setUser(user);
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_achive_level");
eventMap.put("level", "86");
eventMap.put("g22", 1500);
DOT.logEvent(eventMap);
val user = User.Builder()
.setAttr5("86")
.build()
DOT.setUser(user)
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_achive_level"
eventMap["level"] = "86"
eventMap["g22"] = 1500
DOT.logEvent(eventMap)
[DOT setUser:
[User builder:^(User *user) {
[user setAttribute5:@"86"];
}]
];
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_achive_level" forKey:@"event"];
[event setValue:@"86" forKey:@"level"];
[event setValue:[NSNumber numberWithInt:1500] forKey:@"g22"];
[DOT logEvent:event];
~~~`}/>
</TabPane>
<TabPane tab="Swift" key='2'>
<WiseMarkDown source={`
~~~swift
DOT.setUser(
User.builder({ (builder) in
let user = builder as! User
user.attribute5 = "86"
})
)
let event = NSMutableDictionary()
event["event"] = "w_achive_level"
event["level"] = "86"
event["g22"] = 1500
DOT.logEvent(event)
<script type="wisetracker/text" id="wiseTracker2">
DOT.setUser(User.setAttr5("86"));
var event = new Object();
event["event"] = "w_achive_level";
event["level"] = "86";
event["g22"] = 1500;
DOT.logEvent(event);
</script>
<script type="text/javascript">
var event = new Object();
event["event"] = "w_achive_level";
event["level"] = "86";
event["g22"] = 1500;
WDOT.logEvent(event);
</script>
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_achive_level";
event["level"] = "86";
event["g22"] = 1500;
DOT.logEvent(event);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_achive_level",
level : "86",
g22 : 1500
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_achive_level",
level : "86",
g22 : 1500
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_achive_level",
level : "86",
g22 : 1500
}
}));
DOT.setUser(
new DOT_Model.User.Builder()
.setAttr5("86")
.build()
);
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_achive_level");
eventDic.Add("level", "86");
eventDic.Add("g22", 1500);
DOT.logEvent(eventDic);

스테이지 완료

스테이지가 완료된 시점에 아래 코드를 추가합니다.

선택 속성

Key
Value 예시
Type
설명
stage_name
ROUND249
string
스테이지 명칭 또는 ID
credit_name
gold
string
획득한 크레딧 명칭
g4
10000
float
획득한 크레딧 수치
Java
Kotlin
Swift
Objective-C
Mobile Webview
Website
Flutter
ReactNative
C#
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_finish_stage");
eventMap.put("stage_name", "ROUND249");
eventMap.put("credit_name", "gold");
eventMap.put("g4", 10000);
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_finish_stage"
eventMap["stage_name"] = "ROUND249"
eventMap["credit_name"] = "gold"
eventMap["g4"] = 10000
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_finish_stage"
event["stage_name"] = "ROUND249"
event["credit_name"] = "gold"
event["g4"] = 10000
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_finish_stage" forKey:@"event"];
[event setValue:@"ROUND249" forKey:@"stage_name"];
[event setValue:@"gold" forKey:@"credit_name"];
[event setValue:[NSNumber numberWithInt:10000] forKey:@"g4"];
[DOT logEvent:event];
<script type="wisetracker/text" id="wiseTracker2">
var event = new Object();
event["event"] = "w_finish_stage";
event["stage_name"] = "ROUND249";
event["credit_name"] = "gold";