# Game : 게임

:ballot\_box\_with\_check:속성 중 **Key** 이름은 가이드에 나와있는 **Key** 이름을 그대로 사용 해 주세요.\
(임의로 변경시 대시보드에서 데이터 확인이 어렵습니다.  > level , item\_id 등)

## 캐릭터 생성

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

#### **선택 속성**

<table data-header-hidden><thead><tr><th>Key</th><th width="150">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>character_type</td><td>archer</td><td>string</td><td>게임 캐릭터 유형 정보</td></tr><tr><td>character_name</td><td>RAiNFiRE</td><td>string</td><td>게임 캐릭터 명칭 정보</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
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);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_create_character"
eventMap["character_type"] = "archer"
eventMap["character_name"] = "RAiNFiRE"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_create_character"
event["character_type"] = "archer"
event["character_name"] = "RAiNFiRE"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
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];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_create_character";
    event["character_type"] = "archer";
    event["character_name"] = "RAiNFiRE";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_create_character";
    event["character_type"] = "archer";
    event["character_name"] = "RAiNFiRE";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_create_character";
event["character_type"] = "archer";
event["character_name"] = "RAiNFiRE";
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_create_character",
              character_type : "archer",
              character_name : "RAiNFiRE"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .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"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
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);
```

{% endtab %}
{% endtabs %}

## 튜토리얼 시작

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

#### **선택 속성**

<table data-header-hidden><thead><tr><th width="150">Key</th><th width="150">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>tutorial_name</td><td>introduction</td><td>string</td><td>튜토리얼 명칭 또는 ID</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_start_tutorial");
eventMap.put("tutorial_name", "introduction");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_start_tutorial"
eventMap["tutorial_name"] = "introduction"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_start_tutorial"
event["tutorial_name"] = "introduction"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_start_tutorial" forKey:@"event"];
[event setValue:@"introduction" forKey:@"tutorial_name"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_start_tutorial";
    event["tutorial_name"] = "introduction";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_start_tutorial";
    event["tutorial_name"] = "introduction";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_start_tutorial";
event["tutorial_name"] = "introduction";
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_start_tutorial",
              tutorial_name : "introduction"
      }
}));

```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .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"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_start_tutorial");
eventDic.Add("tutorial_name", "introduction");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 튜토리얼 스킵

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

#### **선택 속성**

<table data-header-hidden><thead><tr><th width="174">Key</th><th width="150">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>tutorial_name</td><td>introduction</td><td>string</td><td>튜토리얼 명칭 또는 ID</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_skip_tutorial");
eventMap.put("tutorial_name", "introduction");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_skip_tutorial"
eventMap["tutorial_name"] = "introduction"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_skip_tutorial"
event["tutorial_name"] = "introduction"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_skip_tutorial" forKey:@"event"];
[event setValue:@"introduction" forKey:@"tutorial_name"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_skip_tutorial";
    event["tutorial_name"] = "introduction";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_skip_tutorial";
    event["tutorial_name"] = "introduction";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_skip_tutorial";
event["tutorial_name"] = "introduction";
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_skip_tutorial",
              tutorial_name : "introduction"
      }
}));

```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .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"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_skip_tutorial");
eventDic.Add("tutorial_name", "introduction");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 튜토리얼 완료

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

#### **선택 속성**

<table data-header-hidden><thead><tr><th width="150">Key</th><th width="150">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>tutorial_name</td><td>introduction</td><td>string</td><td>튜토리얼 명칭 또는 ID</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_finish_tutorial");
eventMap.put("tutorial_name", "introduction");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_finish_tutorial"
eventMap["tutorial_name"] = "introduction"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
var event = NSMutableDictionary()
event["event"] = "w_finish_tutorial"
event["tutorial_name"] = "introduction"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_finish_tutorial" forKey:@"event"];
[event setValue:@"introduction" forKey:@"tutorial_name"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_finish_tutorial";
    event["tutorial_name"] = "introduction";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_finish_tutorial";
    event["tutorial_name"] = "introduction";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_finish_tutorial";
event["tutorial_name"] = "introduction";
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_finish_tutorial",
              tutorial_name : "introduction"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .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"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_finish_tutorial");
eventDic.Add("tutorial_name", "introduction");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 게임 시작

게임을 시작하는 시점에 아래 코드를 추가합니다.

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_start_game");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_start_game"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
var event = NSMutableDictionary()
event["event"] = "w_start_game"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_start_game" forKey:@"event"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_start_game";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_start_game";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_start_game";
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_start_game"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_start_game"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
    	event : "w_start_game"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_start_game");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 레벨 달성

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

#### **선택 속성**

<table data-header-hidden><thead><tr><th>Key</th><th width="150">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>setAttr5</td><td>86</td><td>string</td><td>도달한 레벨</td></tr><tr><td>level</td><td>86</td><td>string</td><td>도달한 레벨</td></tr><tr><td>g22</td><td>1500</td><td>float</td><td>획득한 점수</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
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);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
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)
```

{% endtab %}

{% tab title="Swift" %}

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
[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)
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    DOT.setUser(User.setAttr5("86"));
    var event = new Object(); 
    event["event"] = "w_achive_level";
    event["level"] = "86";
    event["g22"] = 1500;
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_achive_level";
    event["level"] = "86";
    event["g22"] = 1500;
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_achive_level";
event["level"] = "86";
event["g22"] = 1500;
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_achive_level",
              level : "86",
              g22 : 1500
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .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
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
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);
```

{% endtab %}
{% endtabs %}

## 스테이지 완료

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

#### **선택 속성**

<table data-header-hidden><thead><tr><th width="150">Key</th><th width="150">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>stage_name</td><td>ROUND249</td><td>string</td><td>스테이지 명칭 또는 ID</td></tr><tr><td>credit_name</td><td>gold</td><td>string</td><td>획득한 크레딧 명칭</td></tr><tr><td>g4</td><td>10000</td><td>float</td><td>획득한 크레딧 수치</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
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);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_finish_stage"
eventMap["stage_name"] = "ROUND249"
eventMap["credit_name"] = "gold"
eventMap["g4"] = 10000
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_finish_stage"
event["stage_name"] = "ROUND249"
event["credit_name"] = "gold"
event["g4"] = 10000
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
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];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object(); 
    event["event"] = "w_finish_stage";
    event["stage_name"] = "ROUND249";
    event["credit_name"] = "gold";
    event["g4"] = 10000;
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_finish_stage";
    event["stage_name"] = "ROUND249";
    event["credit_name"] = "gold";
    event["g4"] = 10000;
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_finish_stage";
event["stage_name"] = "ROUND249";
event["credit_name"] = "gold";
event["g4"] = 10000;
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_finish_stage",
              stage_name : "ROUND249",
              credit_name : "gold",
              g4 : 10000
      }
}));

```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_finish_stage",
    stage_name : "ROUND249",
    credit_name : "gold",
    g4 : 10000
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_finish_stage",
	    stage_name : "ROUND249",
	    credit_name : "gold",
	    g4 : 10000
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_finish_stage");
eventDic.Add("stage_name", "ROUND249");
eventDic.Add("credit_name", "gold");
eventDic.Add("g4", 10000);
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 레이드 시작

레이드가 시작된 시점에 아래 코드를 추가합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th width="150">Key</th><th>Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>boss_name</td><td>tha-rev20201207</td><td>string</td><td>보스 명칭 또는 ID</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_start_raid");
eventMap.put("boss_name", "tha-rev20201207");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_start_raid"
eventMap["boss_name"] = "tha-rev20201207"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_start_raid"
event["boss_name"] = "tha-rev20201207"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_start_raid" forKey:@"event"];
[event setValue:@"tha-rev20201207" forKey:@"boss_name"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_start_raid";
    event["boss_name"] = "tha-rev20201207";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_start_raid";
    event["boss_name"] = "tha-rev20201207";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_start_raid";
event["boss_name"] = "tha-rev20201207";
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_start_raid",
              boss_name : "tha-rev20201207"
      }
}));

```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_start_raid",
    boss_name : "tha-rev20201207"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_start_raid",
	    boss_name : "tha-rev20201207"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_start_raid");
eventDic.Add("boss_name", "tha-rev20201207");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 레이드 완료

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

#### **선택 속성**

<table data-header-hidden><thead><tr><th width="155.53741496598641">Key</th><th width="185">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>boss_name</td><td>tha-rev20201207</td><td>string</td><td>보스 명칭 또는 ID</td></tr><tr><td>item_id</td><td>gau9348</td><td>string</td><td>획득한 아이템 ID 또는 명칭</td></tr><tr><td>item_type</td><td>gauntlet</td><td>string</td><td>획득한 아이템 유형</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_end_raid");
eventMap.put("boss_name", "tha-rev20201207");
eventMap.put("item_id", "gau9348");
eventMap.put("item_type", "gauntlet");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_end_raid"
eventMap["boss_name"] = "tha-rev20201207"
eventMap["item_id"] = "gau9348"
eventMap["item_type"] = "gauntlet"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_end_raid"
event["boss_name"] = "tha-rev20201207"
event["item_id"] = "gau9348"
event["item_type"] = "gauntlet"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_end_raid" forKey:@"event"];
[event setValue:@"tha-rev20201207" forKey:@"boss_name"];
[event setValue:@"gau9348" forKey:@"item_id"];
[event setValue:@"gauntlet" forKey:@"item_type"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_end_raid";
    event["boss_name"] = "tha-rev20201207";
    event["item_id"] = "gau9348";
    event["item_type"] = "gauntlet";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_end_raid";
    event["boss_name"] = "tha-rev20201207";
    event["item_id"] = "gau9348";
    event["item_type"] = "gauntlet";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
    event["event"] = "w_end_raid";
    event["boss_name"] = "tha-rev20201207";
    event["item_id"] = "gau9348";
    event["item_type"] = "gauntlet";
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_end_raid",
              boss_name : "tha-rev20201207",
              item_id : "gau9348",
              item_type : "gauntlet"
      }
}));

```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_end_raid",
    boss_name : "tha-rev20201207",
    item_id : "gau9348",
    item_type : "gauntlet"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_end_raid",
	    boss_name : "tha-rev20201207",
	    item_id : "gau9348",
	    item_type : "gauntlet"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_end_raid");
eventDic.Add("boss_name", "tha-rev20201207");
eventDic.Add("item_id", "gau9348");
eventDic.Add("item_name", "gauntlet");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## PvP 완료

PvP가 완료된 시점에 아래 코드를 추가합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th width="181">Key</th><th>Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>credit_name</td><td>reputation point</td><td>string</td><td>획득한 크레딧 명칭</td></tr><tr><td>g4</td><td>211</td><td>float</td><td>획득한 크레딧 수치</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_finish_pvp");
eventMap.put("credit_name", "reputation point");
eventMap.put("g4", 211);
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_finish_pvp"
eventMap["credit_name"] = "reputation point"
eventMap["g4"] = 211
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_finish_pvp"
event["credit_name"] = "reputation point"
event["g4"] = 211
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_finish_pvp" forKey:@"event"];
[event setValue:@"reputation point" forKey:@"credit_name"];
[event setValue:[NSNumber numberWithInt:211] forKey:@"g4"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_finish_pvp";
    event["credit_name"] = "reputation point";
    event["g4"] = 211;
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_finish_pvp";
    event["credit_name"] = "reputation point";
    event["g4"] = 211;
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_finish_pvp";
event["credit_name"] = "reputation point";
event["g4"] = 211;
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_finish_pvp",
              credit_name : "reputation point",
              g4 : 211
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_finish_pvp",
    credit_name : "reputation point",
    g4 : "211"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_finish_pvp",
	    credit_name : "reputation point",
	    g4 : "211"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_finish_pvp");
eventDic.Add("credit_name", "reputation point");
eventDic.Add("g4", 211);
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 크레딧 사용

보너스나 크레딧 등을 사용 완료한 시점에 아래 코드를 추가합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th>Key</th><th width="200">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>credit_name</td><td>diamond</td><td>string</td><td>사용한 크레딧 명칭</td></tr><tr><td>g3</td><td>500</td><td>float</td><td>사용한 크레딧 수치</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_credit_spent");
eventMap.put("credit_name", "diamond");
eventMap.put("g4", 500);
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_credit_spent"
eventMap["credit_name"] = "diamond"
eventMap["g4"] = 500
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_credit_spent"
event["credit_name"] = "diamond"
event["g4"] = 500
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_credit_spent" forKey:@"event"];
[event setValue:@"diamond" forKey:@"credit_name"];
[event setValue:[NSNumber numberWithInt:500] forKey:@"g4"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_credit_spent";
    event["credit_name"] = "diamond";
    event["g4"] = 500;
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_credit_spent";
    event["credit_name"] = "diamond";
    event["g4"] = 500;
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_credit_spent";
event["credit_name"] = "diamond";
event["g4"] = 500;
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_credit_spent",
              credit_name : "diamond",
              g4 : 500
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_credit_spent",
    credit_name : "diamond",
    g4 : 500
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_credit_spent",
	    credit_name : "diamond",
	    g4 : 500
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_credit_spent");
eventDic.Add("credit_name", "diamond");
eventDic.Add("g3", 500);
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 선물하기&#x20;

선물하기가 완료된 시점에 아래 코드를 추가합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th width="150">Key</th><th width="150">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>item_id</td><td>newbie pack</td><td>string</td><td>선물한 아이템 ID 또는 명칭</td></tr><tr><td>item_type</td><td>promotion</td><td>string</td><td>선물한 아이템 유형</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_send_gift");
eventMap.put("item_id", "newbie pack");
eventMap.put("item_type", "promotion");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_send_gift"
eventMap["item_id"] = "newbie pack"
eventMap["item_type"] = "promotion"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_send_gift"
event["item_id"] = "newbie pack"
event["item_type"] = "promotion"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_send_gift" forKey:@"event"];
[event setValue:@"newbie pack" forKey:@"item_id"];
[event setValue:@"promotion" forKey:@"item_type"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_send_gift";
    event["item_id"] = "newbie pack";
    event["item_type"] = "promotion";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_send_gift";
    event["item_id"] = "newbie pack";
    event["item_type"] = "promotion";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_send_gift";
event["item_id"] = "newbie pack";
event["item_type"] = "promotion";
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_send_gift",
              item_id : "newbie pack",
              item_type : "promotion"
      }
}));

```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_send_gift",
    item_id : "newbie pack",
    item_type : "promotion"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_send_gift",
	    item_id : "newbie pack",
	    item_type : "promotion"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_send_gift");
eventDic.Add("item_id", "newbie pack");
eventDic.Add("item_name", "promotion");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 초대&#x20;

유저를 초대 완료한 시점에 아래 코드를 추가합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th width="150">Key</th><th width="150">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>invite_type</td><td>kakao</td><td>string</td><td>초대를 전송한 미디어</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_invite");
eventMap.put("invite_type", "kakao");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_invite"
eventMap["invite_type"] = "kakao"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_invite"
event["invite_type"] = "kakao"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_invite" forKey:@"event"];
[event setValue:@"kakao" forKey:@"invite_type"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_invite";
    event["invite_type"] = "kakao";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_invite";
    event["invite_type"] = "kakao";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_invite";
event["invite_type"] = "kakao";
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_invite",
              invite_type : "kakao"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_invite",
    invite_type : "kakao"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_invite",
	    invite_type : "kakao"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_invite");
eventDic.Add("invite_type", "kakao");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 공유

공유를 완료한 시점 또는 공유 버튼이 클릭된 시점에 아래 코드를 추가합니다.

#### 선택 속성

<table data-header-hidden><thead><tr><th>Key</th><th width="150">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>share_type</td><td>line</td><td>string</td><td>공유한 미디어</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_share");
eventMap.put("share_type", "line");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_share"
eventMap["share_type"] = "line"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_share"
event["share_type"] = "line"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_share" forKey:@"event"];
[event setValue:@"line" forKey:@"share_type"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_share";
    event["share_type"] = "line";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_share";
    event["share_type"] = "line";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_share";
event["share_type"] = "line";
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_share",
              share_type : "line"
      }
}));

```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_share",
    share_type : "line"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_share",
	    share_type : "line"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_share");
eventDic.Add("share_type", "line");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 인앱 광고 클릭

인앱 광고가 클릭된 시점에 아래 코드를 추가합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th width="150">Key</th><th width="155.7142857142857">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>ad_name</td><td>cr337203984</td><td>string</td><td>클릭된 광고 ID 또는 명칭</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_click_ad");
eventMap.put("ad_name", "cr337203984");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_click_ad"
eventMap["ad_name"] = "cr337203984"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_click_ad"
event["ad_name"] = "cr337203984"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_click_ad" forKey:@"event"];
[event setValue:@"cr337203984" forKey:@"ad_name"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_click_ad";
    event["ad_name"] = "cr337203984";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_click_ad";
    event["ad_name"] = "cr337203984";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_click_ad";
event["ad_name"] = "cr337203984";
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_click_ad",
              ad_name : "cr337203984"
      }
}));

```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_click_ad",
    ad_name : "cr337203984"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_click_ad",
	    ad_name : "cr337203984"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_click_ad");
eventDic.Add("ad_name", "cr337203984");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 인앱 광고 스킵

인앱 광고가 스킵된 시점에 아래 코드를 추가합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th width="150">Key</th><th width="150">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>ad_name</td><td>cr337203984</td><td>string</td><td>스킵된 광고 ID 또는 명칭</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_skip_ad");
eventMap.put("ad_name", "cr337203984");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_skip_ad"
eventMap["ad_name"] = "cr337203984"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_skip_ad"
event["ad_name"] = "cr337203984"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_skip_ad" forKey:@"event"];
[event setValue:@"cr337203984" forKey:@"ad_name"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_skip_ad";
    event["ad_name"] = "cr337203984";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_skip_ad";
    event["ad_name"] = "cr337203984";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_skip_ad";
event["ad_name"] = "cr337203984";
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_skip_ad",
              ad_name : "cr337203984"
      }
}));

```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_skip_ad",
    ad_name : "cr337203984"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_skip_ad",
	    ad_name : "cr337203984"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_skip_ad");
eventDic.Add("ad_name", "cr337203984");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://document.wisetracker.co.kr/v2-developer/in-app-event/event-list/game.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
