# Mobility : 모빌리티

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

## 차량 등록

차량이 등록된 시점에 아래 코드를 추가합니다.

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

<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>car_name</td><td>레이</td><td>string</td><td>차량 명칭</td></tr><tr><td>car_type</td><td>소형</td><td>string</td><td>차량 유형</td></tr><tr><td>car_subtype_a</td><td>하이패스</td><td>string</td><td>차량 기타 속성</td></tr></tbody></table>

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

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_add_car_info");
eventMap.put("car_name", "레이");
eventMap.put("car_type", "소형");
eventMap.put("car_subtype_a", "하이패스");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_add_car_info"
eventMap["car_name"] = "레이"
eventMap["car_type"] = "소형"
eventMap["car_subtype_a"] = "하이패스"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_add_car_info"
event["car_name"] = "레이"
event["car_type"] = "소형"
event["car_subtype_a"] = "하이패스"
DOT.logEvent(event)
```

{% endtab %}

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

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_add_car_info" forKey:@"event"];
[event setValue:@"레이" forKey:@"car_name"];
[event setValue:@"소형" forKey:@"car_type"];
[event setValue:@"하이패스" forKey:@"car_subtype_a"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_add_car_info";
    event["car_name"] = "레이";
    event["car_type"] = "소형";
    event["car_subtype_a"] = "하이패스";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_add_car_info";
    event["car_name"] = "레이";
    event["car_type"] = "소형";
    event["car_subtype_a"] = "하이패스";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_add_car_info";
event["car_name"] = "레이";
event["car_type"] = "소형";
event["car_subtype_a"] = "하이패스";
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
            event : "w_add_car_info",
            car_name : "레이",
            car_type : "소형",
            car_subtype_a : "하이패스"

      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_add_car_info",
    car_name : "레이",
    car_type : "소형",
    car_subtype_a : "하이패스"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_add_car_info",
	    car_name : "레이",
	    car_type : "소형",
	    car_subtype_a : "하이패스"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_add_car_info");
eventDic.Add("car_name", "레이");
eventDic.Add("car_type", "소형");
eventDic.Add("car_subtype_a", "하이패스");
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>bookmark_type</td><td>집</td><td>string</td><td>북마크 명칭 또는 유형</td></tr><tr><td>city</td><td>서울시</td><td>string</td><td>등록된 위치의 도시 정보</td></tr></tbody></table>

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

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_bookmarked");
eventMap.put("bookmark_type", "집");
eventMap.put("city", "서울시");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_bookmarked"
eventMap["bookmark_type"] = "집"
eventMap["city"] = "서울시"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_bookmarked"
event["bookmark_type"] = "집"
event["city"] = "서울시"
DOT.logEvent(event)
```

{% endtab %}

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

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_bookmarked" forKey:@"event"];
[event setValue:@"집" forKey:@"bookmark_type"];
[event setValue:@"서울시" forKey:@"city"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_bookmarked";
    event["bookmark_type"] = "집";
    event["city"] = "서울시";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_bookmarked";
    event["bookmark_type"] = "집";
    event["city"] = "서울시";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_bookmarked";
event["bookmark_type"] = "집";
event["city"] = "서울시";
DOT.logEvent(event);

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

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_bookmarked",
    bookmark_type : "집",
    city : "서울시"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_bookmarked",
	    bookmark_type : "집",
	    city : "서울시"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_bookmarked");
eventDic.Add("bookmark_type", "집");
eventDic.Add("city", "서울시");
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>payment_name</td><td>현대카드</td><td>string</td><td>결제수단 명칭</td></tr><tr><td>payment_type</td><td>신용카드</td><td>string</td><td>결제수단 유형</td></tr></tbody></table>

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

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_add_payment_info");
eventMap.put("payment_name", "현대카드");
eventMap.put("payment_type", "신용카드");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_add_payment_info"
eventMap["payment_name"] = "현대카드"
eventMap["payment_type"] = "신용카드"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_add_payment_info"
event["payment_name"] = "현대카드"
event["payment_type"] = "신용카드"
DOT.logEvent(event)
```

{% endtab %}

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

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_add_payment_info" forKey:@"event"];
[event setValue:@"현대카드" forKey:@"payment_name"];
[event setValue:@"신용카드" forKey:@"payment_type"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_add_payment_info";
    event["payment_name"] = "현대카드";
    event["payment_type"] = "신용카드";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_add_payment_info";
    event["payment_name"] = "현대카드";
    event["payment_type"] = "신용카드";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_add_payment_info";
event["payment_name"] = "현대카드";
event["payment_type"] = "신용카드";
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
            event : "w_add_payment_info",
            payment_name : "현대카드",
            payment_type : "신용카드"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_add_payment_info",
    payment_name : "현대카드",
    payment_type : "신용카드"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_add_payment_info",
	    payment_name : "현대카드",
	    payment_type : "신용카드"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_add_payment_info");
eventDic.Add("payment_name", "현대카드");
eventDic.Add("payment_type", "신용카드");
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>destination_a</td><td>선릉역</td><td>string</td><td>출발 지역</td></tr><tr><td>destination_b</td><td>올림픽공원</td><td>string</td><td>도착 지역</td></tr><tr><td>g20</td><td>2</td><td>float</td><td>검색 결과로 출력된 아이템 개수</td></tr></tbody></table>

### 출발지와 목적지를 함께 검색하는 경우

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

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_search_destination");
eventMap.put("destination_a", "선릉역");
eventMap.put("destination_b", "올림픽공원");
eventMap.put("g20", 2);
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_search_destination"
eventMap["destination_a"] = "선릉역"
eventMap["destination_b"] = "올림픽공원"
eventMap["g20"] = 2
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_search_destination"
event["destination_a"] = "선릉역"
event["destination_b"] = "올림픽공원"
event["g20"] = 2
DOT.logEvent(event)
```

{% endtab %}

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

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_search_destination" forKey:@"event"];
[event setValue:@"선릉역" forKey:@"destination_a"];
[event setValue:@"올림픽공원" forKey:@"destination_b"];
[event setValue:[NSNumber numberWithInt:2] forKey:@"g20"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_search_destination";
    event["destination_a"] = "선릉역";
    event["destination_b"] = "올림픽공원";
    event["g20"] = 2;
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_search_destination";
    event["destination_a"] = "선릉역";
    event["destination_b"] = "올림픽공원";
    event["g20"] = 2;
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_search_destination";
event["destination_a"] = "선릉역";
event["destination_b"] = "올림픽공원";
event["g20"] = 2;
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
            event : "w_search_destination",
            destination_a : "선릉역",
            destination_b : "올림픽공원",
            g20 : 2      
            }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_search_destination",
    destination_a : "선릉역",
    destination_b : "올림픽공원",
    g20 : 2
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_search_destination",
	    destination_a : "선릉역",
	    destination_b : "올림픽공원",
	    g20 : 2
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_search_destination");
eventDic.Add("destination_a", "선릉역");
eventDic.Add("destination_b", "올림픽공원");
eventDic.Add("g20", 2);
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

### 목적지만 검색하는 경우

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

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_search_destination");
eventMap.put("destination_b", "올림픽공원");
eventMap.put("g20", 2);
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_search_destination"
eventMap["destination_b"] = "올림픽공원"
eventMap["g20"] = 2
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_search_destination"
event["destination_b"] = "올림픽공원"
event["g20"] = 2
DOT.logEvent(event)
```

{% endtab %}

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

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_search_destination" forKey:@"event"];
[event setValue:@"올림픽공원" forKey:@"destination_b"];
[event setValue:[NSNumber numberWithInt:2] forKey:@"g20"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_search_destination";
    event["destination_b"] = "올림픽공원";
    event["g20"] = 2;
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_search_destination";
    event["destination_b"] = "올림픽공원";
    event["g20"] = 2;
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_search_destination";
event["destination_b"] = "올림픽공원";
event["g20"] = 2;
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
            event : "w_search_destination",
            destination_b : "올림픽공원",
            g20 : 2      
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_search_destination",
    destination_b : "올림픽공원",
    g20 : 2
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_search_destination",
	    destination_b : "올림픽공원",
	    g20 : 2
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_search_destination");
eventDic.Add("destination_b", "올림픽공원");
eventDic.Add("g20", 2);
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>destination_a</td><td>선릉역</td><td>string</td><td>차량이 출발하는 지역명</td></tr><tr><td>destination_b</td><td>올림픽공원</td><td>string</td><td>차량이 도착할 지역명</td></tr><tr><td>distance</td><td>5.8</td><td>float</td><td>목적지까지의 거리</td></tr><tr><td>city</td><td>서울</td><td>string</td><td>차량을 호출하는 위치가 속한 도시</td></tr><tr><td>price</td><td>31500</td><td>double</td><td>운행요금</td></tr><tr><td>currency</td><td>KRW</td><td>string</td><td>통화코드</td></tr><tr><td>product_id</td><td>C30403</td><td>string</td><td>요청한 상품코드</td></tr><tr><td>product_name</td><td>베이직</td><td>string</td><td>요청한 상품명칭</td></tr></tbody></table>

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

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_request_ride");
eventMap.put("destination_a", "선릉역");
eventMap.put("destination_b", "올림픽공원");
eventMap.put("distance", 5.8);
eventMap.put("city", "서울");
eventMap.put("price", 31500);
eventMap.put("currency", "KRW");
Map<String, Object> productMap = new HashMap<>();
productMap.put("product_id", "C30403");
productMap.put("product_name", "베이직");
eventMap.put("product", productMap);
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_request_ride"
eventMap["destination_a"] = "선릉역"
eventMap["destination_b"] = "올림픽공원"
eventMap["distance"] = 5.8
eventMap["city"] = "서울"
eventMap["price"] = 31500
eventMap["currency"] = "KRW"
val productMap = mutableMapOf<String,Any>()
productMap["product_id"] = "C30403"
productMap["product_name"] = "베이직"
eventMap["product"] = productMap
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_request_ride"
event["destination_a"] = "선릉역"
event["destination_b"] = "올림픽공원"
event["distance"] = 5.8
event["city"] = "서울"
event["price"] = 31500
event["currency"] = "KRW"
var product : [String: Any] = [:]
product["product_id"] = "C30403"
product["product_name"] = "베이직"
event["product"] = product
DOT.logEvent(event)
```

{% endtab %}

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

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_request_ride" forKey:@"event"];
[event setValue:@"선릉역" forKey:@"destination_a"];
[event setValue:@"올림픽공원" forKey:@"destination_b"];
[event setValue:[NSNumber numberWithInt:5.8] forKey:@"distance"];
[event setValue:@"서울" forKey:@"city"];
[event setValue:[NSNumber numberWithInt:31500] forKey:@"price"];
[event setValue:@"KRW" forKey:@"currency"];
NSMutableDictionary *product = [[NSMutableDictionary alloc] init];
[product setValue:@"C30403" forKey:@"product_id"];
[product setValue:@"베이직" forKey:@"product_name"];
[event setValue:@product forKey:@"product"]
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_request_ride";
    event["destination_a"] = "선릉역";
    event["destination_b"] = "올림픽공원";
    event["distance"] = 5.8;
    event["city"] = "서울";
    event["price"] = 31500;
    event["currency"] = "KRW";
    var product = new Object();
    product["product_id"] = "C30403";
    product["product_name"] = "베이직";
    event["product"] = product;
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_request_ride";
    event["destination_a"] = "선릉역";
    event["destination_b"] = "올림픽공원";
    event["distance"] = 5.8;
    event["city"] = "서울";
    event["price"] = 31500;
    event["currency"] = "KRW";
    var product = new Object();
    product["product_id"] = "C30403";
    product["product_name"] = "베이직";
    event["product"] = product;
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_request_ride";
event["destination_a"] = "선릉역";
event["destination_b"] = "올림픽공원";
event["distance"] = 5.8;
event["city"] = "서울";
event["price"] = 31500;
event["currency"] = "KRW";
Map product = {};
product["product_id"] = "C30403";
product["product_name"] = "베이직";
event["product"] = product;
DOT.logEvent(event);

// webview 에서 호출 할 때

var event = new Object();
event["event"] = "w_request_ride";
event["destination_a"] = "선릉역";
event["destination_b"] = "올림픽공원";
event["distance"] = 5.8;
event["city"] = "서울";
event["price"] = 31500;
event["currency"] = "KRW";
var product = new Object();
product["product_id"] = "C30403";
product["product_name"] = "베이직";

event["product"] = product ;

window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: event
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_request_ride",
    destination_a : "선릉역",
    destination_b : "올림픽공원",
    distance : 5.8,
    city : "서울",
    price : 31500,
    currency : "KRW",
    product : {
	    product_id : "C30403",
	    product_name : "베이직"
    }
})); 

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_request_ride",
	    destination_a : "선릉역",
	    destination_b : "올림픽공원",
	    distance : 5.8,
	    city : "서울",
	    price : 31500,
	    currency : "KRW",
	    product : {
		    product_id : "C30403",
		    product_name : "베이직"
	    }
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_request_ride");
eventDic.Add("destination_a", "선릉역");
eventDic.Add("destination_b", "올림픽공원");
eventDic.Add("distance", 5.8);
eventDic.Add("city", "서울");
eventDic.Add("price", 31500);
eventDic.Add("currency", "KRW");
Dictionary<string, object> product = new Dictionary<string, object>();
product.Add("product_id", "C30403");
product.Add("product_name", "베이직");
List<Dictionary<string, object>> productList = new List<Dictionary<string, object>>();
productList.Add(product);
eventDic.Add("product", productList);
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 차량 호출 승인

호출이 승인되어 배차가 완료된 시점에 아래 코드를 추가합니다.

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

<table data-header-hidden><thead><tr><th width="159.7142857142857">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>destination_a</td><td>선릉역</td><td>string</td><td>차량이 출발하는 지역명</td></tr><tr><td>destination_b</td><td>올림픽공원</td><td>string</td><td>차량이 도착할 지역명</td></tr><tr><td>distance</td><td>5.8</td><td>float</td><td>목적지까지의 거리</td></tr><tr><td>city</td><td>서울</td><td>string</td><td>차량을 호출한 위치가 속한 도시</td></tr><tr><td>car_id</td><td>V39849</td><td>string</td><td>배차된 차량 ID</td></tr><tr><td>car_type</td><td>sedan</td><td>string</td><td>배차된 차량 유형</td></tr><tr><td>driver_id</td><td>DR3020</td><td>string</td><td>배차된 운전자 ID</td></tr><tr><td>price</td><td>31500</td><td>string</td><td>운행요금</td></tr><tr><td>currency</td><td>KRW</td><td>string</td><td>통화코드</td></tr><tr><td>product_id</td><td>C30403</td><td>string</td><td>배차된 상품코드</td></tr><tr><td>product_name</td><td>베이직</td><td>string</td><td>배차된 상품명칭</td></tr></tbody></table>

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

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_ride_approved");
eventMap.put("destination_a", "선릉역");
eventMap.put("destination_b", "올림픽공원");
eventMap.put("distance", 5.8);
eventMap.put("city", "서울");
eventMap.put("car_id", "V39849");
eventMap.put("car_type", "sedan");
eventMap.put("driver_id", "DR3020");
eventMap.put("price", 31500);
eventMap.put("currency", "KRW");
Map<String, Object> productMap = new HashMap<>();
productMap.put("product_id", "C30403");
productMap.put("product_name", "베이직");
eventMap.put("product", productMap);
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_ride_approved"
eventMap["destination_a"] = "선릉역"
eventMap["destination_b"] = "올림픽공원"
eventMap["distance"] = 5.8
eventMap["city"] = "서울"
eventMap["car_id"] = "V39849"
eventMap["car_type"] = "sedan"
eventMap["driver_id"] = "DR3020"
eventMap["price"] = 31500
eventMap["currency"] = "KRW"
val productMap = mutableMapOf<String,Any>()
productMap["product_id"] = "C30403"
productMap["product_name"] = "베이직"
eventMap["product"] = productMap
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_ride_approved"
event["destination_a"] = "선릉역"
event["destination_b"] = "올림픽공원"
event["distance"] = 5.8
event["city"] = "서울"
event["car_id"] = "V39849"
event["car_type"] = "sedan"
event["driver_id"] = "DR3020"
event["price"] = 31500
event["currency"] = "KRW"
var product : [String: Any] = [:]
product["product_id"] = "C30403"
product["product_name"] = "베이직"
event["product"] = product
DOT.logEvent(event)
```

{% endtab %}

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

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_ride_approved" forKey:@"event"];
[event setValue:@"선릉역" forKey:@"destination_a"];
[event setValue:@"올림픽공원" forKey:@"destination_b"];
[event setValue:[NSNumber numberWithInt:5.8] forKey:@"distance"];
[event setValue:@"서울" forKey:@"city"];
[event setValue:@"V39849" forKey:@"car_id"];
[event setValue:@"sedan" forKey:@"car_type"];
[event setValue:@"DR3020" forKey:@"driver_id"];
[event setValue:[NSNumber numberWithInt:31500] forKey:@"price"];
[event setValue:@"KRW" forKey:@"currency"];
NSMutableDictionary *product = [[NSMutableDictionary alloc] init];
[product setValue:@"C30403" forKey:@"product_id"];
[product setValue:@"베이직" forKey:@"product_name"];
[event setValue:@product forKey:@"product"]
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_ride_approved";
    event["destination_a"] = "선릉역";
    event["destination_b"] = "올림픽공원";
    event["distance"] = 5.8;
    event["city"] = "서울";
    event["car_id"] = "V39849";
    event["car_type"] = "sedan";
    event["driver_id"] = "DR3020";
    event["price"] = 31500;
    event["currency"] = "KRW";
    var product = new Object();
    product["product_id"] = "C30403";
    product["product_name"] = "베이직";
    event["product"] = product;
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_ride_approved";
    event["destination_a"] = "선릉역";
    event["destination_b"] = "올림픽공원";
    event["distance"] = 5.8;
    event["city"] = "서울";
    event["car_id"] = "V39849";
    event["car_type"] = "sedan";
    event["driver_id"] = "DR3020";
    event["price"] = 31500;
    event["currency"] = "KRW";
    var product = new Object();
    product["product_id"] = "C30403";
    product["product_name"] = "베이직";
    event["product"] = product;
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_ride_approved";
event["destination_a"] = "선릉역";
event["destination_b"] = "올림픽공원";
event["distance"] = 5.8;
event["city"] = "서울";
event["car_id"] = "V39849";
event["car_type"] = "sedan";
event["driver_id"] = "DR3020";
event["price"] = 31500;
event["currency"] = "KRW";
Map product = {};
product["product_id"] = "C30403";
product["product_name"] = "베이직";
event["product"] = product;
DOT.logEvent(event);

// webview 에서 호출 할 때
var event = new Object();
event["event"] = "w_ride_approved";
event["destination_a"] = "선릉역";
event["destination_b"] = "올림픽공원";
event["distance"] = 5.8;
event["city"] = "서울";
event["car_id"] = "V39849";
event["car_type"] = "sedan";
event["driver_id"] = "DR3020";
event["price"] = 31500;
event["currency"] = "KRW";
var product = new Object();
product["product_id"] = "C30403";
product["product_name"] = "베이직";

event["product"] = product ;

window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: event
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_ride_approved",
    destination_a : "선릉역",
    destination_b : "올림픽공원",
    distance : 5.8,
    city : "서울",
    car_id : "V39849",
    car_type : "sedan",
    driver_id : "DR3020",
    price : 31500,
    currency : "KRW",
    product : {
	    product_id : "C30403",
	    product_name : "베이직"
    }
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_ride_approved",
	    destination_a : "선릉역",
	    destination_b : "올림픽공원",
	    distance : 5.8,
	    city : "서울",
	    car_id : "V39849",
	    car_type : "sedan",
	    driver_id : "DR3020",
	    price : 31500,
	    currency : "KRW",
	    product : {
		    product_id : "C30403",
		    product_name : "베이직"
	    }
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_ride_approved");
eventDic.Add("destination_a", "선릉역");
eventDic.Add("destination_b", "올림픽공원");
eventDic.Add("distance", 5.8);
eventDic.Add("city", "서울");
eventDic.Add("car_id", "V39849");
eventDic.Add("car_type", "sedan");
eventDic.Add("driver_id", "DR3020");
eventDic.Add("price", 31500);
eventDic.Add("currency", "KRW");
Dictionary<string, object> product = new Dictionary<string, object>();
product.Add("product_id", "C30403");
product.Add("product_name", "베이직");
List<Dictionary<string, object>> productList = new List<Dictionary<string, object>>();
productList.Add(product);
eventDic.Add("product", productList);
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 차량 호출 취소

호출이 취소된 시점에 아래 코드를 추가합니다.

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

<table data-header-hidden><thead><tr><th width="159.7142857142857">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>destination_a</td><td>선릉역</td><td>string</td><td>차량이 출발하는 지역명</td></tr><tr><td>destination_b</td><td>올림픽공원</td><td>string</td><td>차량이 도착할 지역명</td></tr><tr><td>distance</td><td>5.8</td><td>float</td><td>목적지까지의 거리</td></tr><tr><td>city</td><td>서울</td><td>string</td><td>차량을 호출한 위치가 속한 도시</td></tr><tr><td>car_id</td><td>V39849</td><td>string</td><td>배차된 차량 ID</td></tr><tr><td>car_type</td><td>sedan</td><td>string</td><td>배차된 차량 유형</td></tr><tr><td>driver_id</td><td>DR3020</td><td>string</td><td>배차된 운전자 ID</td></tr><tr><td>price</td><td>31500</td><td>string</td><td>운행요금</td></tr><tr><td>currency</td><td>KRW</td><td>string</td><td>통화코드</td></tr><tr><td>product_id</td><td>C30403</td><td>string</td><td>배차된 상품코드</td></tr><tr><td>product_name</td><td>베이직</td><td>string</td><td>배차된 상품명칭</td></tr></tbody></table>

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

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_ride_cancelled");
eventMap.put("destination_a", "선릉역");
eventMap.put("destination_b", "올림픽공원");
eventMap.put("distance", 5.8);
eventMap.put("city", "서울");
eventMap.put("car_id", "V39849");
eventMap.put("car_type", "sedan");
eventMap.put("driver_id", "DR3020");
eventMap.put("price", 31500);
eventMap.put("currency", "KRW");
Map<String, Object> productMap = new HashMap<>();
productMap.put("product_id", "C30403");
productMap.put("product_name", "베이직");
eventMap.put("product", productMap);
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_ride_cancelled"
eventMap["destination_a"] = "선릉역"
eventMap["destination_b"] = "올림픽공원"
eventMap["distance"] = 5.8
eventMap["city"] = "서울"
eventMap["car_id"] = "V39849"
eventMap["car_type"] = "sedan"
eventMap["driver_id"] = "DR3020"
eventMap["price"] = 31500
eventMap["currency"] = "KRW"
val productMap = mutableMapOf<String,Any>()
productMap["product_id"] = "C30403"
productMap["product_name"] = "베이직"
eventMap["product"] = productMap
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_ride_cancelled"
event["destination_a"] = "선릉역"
event["destination_b"] = "올림픽공원"
event["distance"] = 5.8
event["city"] = "서울"
event["car_id"] = "V39849"
event["car_type"] = "sedan"
event["driver_id"] = "DR3020"
event["price"] = 31500
event["currency"] = "KRW"
var product : [String: Any] = [:]
product["product_id"] = "C30403"
product["product_name"] = "베이직"
event["product"] = product
DOT.logEvent(event)
```

{% endtab %}

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

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_ride_cancelled" forKey:@"event"];
[event setValue:@"선릉역" forKey:@"destination_a"];
[event setValue:@"올림픽공원" forKey:@"destination_b"];
[event setValue:[NSNumber numberWithInt:5.8] forKey:@"distance"];
[event setValue:@"서울" forKey:@"city"];
[event setValue:@"V39849" forKey:@"car_id"];
[event setValue:@"sedan" forKey:@"car_type"];
[event setValue:@"DR3020" forKey:@"driver_id"];
[event setValue:[NSNumber numberWithInt:31500] forKey:@"price"];
[event setValue:@"KRW" forKey:@"currency"];
NSMutableDictionary *product = [[NSMutableDictionary alloc] init];
[product setValue:@"C30403" forKey:@"product_id"];
[product setValue:@"베이직" forKey:@"product_name"];
[event setValue:@product forKey:@"product"]
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_ride_cancelled";
    event["destination_a"] = "선릉역";
    event["destination_b"] = "올림픽공원";
    event["distance"] = 5.8;
    event["city"] = "서울";
    event["car_id"] = "V39849";
    event["car_type"] = "sedan";
    event["driver_id"] = "DR3020";
    event["price"] = 31500;
    event["currency"] = "KRW";
    var product = new Object();
    product["product_id"] = "C30403";
    product["product_name"] = "베이직";
    event["product"] = product;
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_ride_cancelled";
    event["destination_a"] = "선릉역";
    event["destination_b"] = "올림픽공원";
    event["distance"] = 5.8;
    event["city"] = "서울";
    event["car_id"] = "V39849";
    event["car_type"] = "sedan";
    event["driver_id"] = "DR3020";
    event["price"] = 31500;
    event["currency"] = "KRW";
    var product = new Object();
    product["product_id"] = "C30403";
    product["product_name"] = "베이직";
    event["product"] = product;
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_ride_cancelled";
event["destination_a"] = "선릉역";
event["destination_b"] = "올림픽공원";
event["distance"] = 5.8;
event["city"] = "서울";
event["car_id"] = "V39849";
event["car_type"] = "sedan";
event["driver_id"] = "DR3020";
event["price"] = 31500;
event["currency"] = "KRW";
Map product = {};
product["product_id"] = "C30403";
product["product_name"] = "베이직";
event["product"] = product;
DOT.logEvent(event);

// webview 에서 호출 할 때

var event = new Object();
event["event"] = "w_ride_cancelled";
event["destination_a"] = "선릉역";
event["destination_b"] = "올림픽공원";
event["distance"] = 5.8;
event["city"] = "서울";
event["car_id"] = "V39849";
event["car_type"] = "sedan";
event["driver_id"] = "DR3020";
event["price"] = 31500;
event["currency"] = "KRW";
var product = new Object();
product["product_id"] = "C30403";
product["product_name"] = "베이직";

event["product"] = product ;

window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: event
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_ride_cancelled",
    destination_a : "선릉역",
    destination_b : "올림픽공원",
    distance : 5.8,
    city : "서울",
    car_id : "V39849",
    car_type : "sedan",
    driver_id : "DR3020",
    price : 31500,
    currency : "KRW",
    product : {
	    product_id : "C30403",
	    product_name : "베이직"
    }
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_ride_cancelled",
	    destination_a : "선릉역",
	    destination_b : "올림픽공원",
	    distance : 5.8,
	    city : "서울",
	    car_id : "V39849",
	    car_type : "sedan",
	    driver_id : "DR3020",
	    price : 31500,
	    currency : "KRW",
	    product : {
		    product_id : "C30403",
		    product_name : "베이직"
	    }
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_ride_cancelled");
eventDic.Add("destination_a", "선릉역");
eventDic.Add("destination_b", "올림픽공원");
eventDic.Add("distance", 5.8);
eventDic.Add("city", "서울");
eventDic.Add("car_id", "V39849");
eventDic.Add("car_type", "sedan");
eventDic.Add("driver_id", "DR3020");
eventDic.Add("price", 31500);
eventDic.Add("currency", "KRW");
Dictionary<string, object> product = new Dictionary<string, object>();
product.Add("product_id", "C30403");
product.Add("product_name", "베이직");
List<Dictionary<string, object>> productList = new List<Dictionary<string, object>>();
productList.Add(product);
eventDic.Add("product", productList);
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 운행 종료

차량이 목적지까지 운행을 마치고 비용이 결제된 시점에 아래 코드를 추가합니다.

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

<table data-header-hidden><thead><tr><th width="180.7142857142857">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>transaction_id</td><td>CL39932003</td><td>string</td><td>주문번호</td></tr><tr><td>destination_a</td><td>선릉역</td><td>string</td><td>차량이 출발한 지역명</td></tr><tr><td>destination_b</td><td>올림픽공원</td><td>string</td><td>차량이 도착한 지역명</td></tr><tr><td>distance</td><td>5.8</td><td>float</td><td>목적지까지의 거리</td></tr><tr><td>city</td><td>서울</td><td>string</td><td>차량을 호출한 위치가 속한 도시</td></tr><tr><td>car_id</td><td>V39849</td><td>string</td><td>배차된 차량 ID</td></tr><tr><td>car_type</td><td>sedan</td><td>string</td><td>배차된 차량 유형</td></tr><tr><td>driver_id</td><td>DR3020</td><td>string</td><td>배차된 운전자 ID</td></tr><tr><td>price</td><td>31500</td><td>string</td><td>운행요금</td></tr><tr><td>currency</td><td>KRW</td><td>string</td><td>통화코드</td></tr><tr><td>riding_time</td><td>21</td><td>float</td><td>운행 시작부터 운행 완료까지의 시간을 분단위로 입력</td></tr><tr><td>product_id</td><td>C30403</td><td>string</td><td>배차된 상품코드</td></tr><tr><td>product_name</td><td>베이직</td><td>string</td><td>배차된 상품명칭</td></tr><tr><td>quantity</td><td>1</td><td>string</td><td>호출한 차량 대수</td></tr><tr><td>revenue</td><td>31500</td><td>double</td><td>유저가 결제한 금액</td></tr></tbody></table>

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

```java
Map<String, Object> purchaseMap = new HashMap<>();
purchaseMap.put("transaction_id", "CL39932003");
purchaseMap.put("destination_a", "선릉역");
purchaseMap.put("destination_b", "올림픽공원");
purchaseMap.put("distance", 5.8);
purchaseMap.put("city", "서울");
purchaseMap.put("car_id", "V39849");
purchaseMap.put("car_type", "sedan");
purchaseMap.put("driver_id", "DR3020");
purchaseMap.put("price", 31500);
purchaseMap.put("currency", "KRW");
purchaseMap.put("riding_time", 21);
Map<String, Object> productMap = new HashMap<>();
productMap.put("product_id", "C30403");
productMap.put("product_name", "베이직");
productMap.put("quantity", 1);
productMap.put("revenue", 31500);
purchaseMap.put("product", productMap);
DOT.logPurchase(purchaseMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val purchaseMap = mutableMapOf<String,Any>()
purchaseMap["transaction_id"] = "CL39932003"
purchaseMap["destination_a"] = "선릉역"
purchaseMap["destination_b"] = "올림픽공원"
purchaseMap["distance"] = 5.8
purchaseMap["city"] = "서울"
purchaseMap["car_id"] = "V39849"
purchaseMap["car_type"] = "sedan"
purchaseMap["driver_id"] = "DR3020"
purchaseMap["price"] = 31500
purchaseMap["currency"] = "KRW"
purchaseMap["riding_time"] = 21
val productMap = mutableMapOf<String,Any>()
productMap["product_id"] = "C30403"
productMap["product_name"] = "베이직"
productMap["quantity"] = 1
productMap["revenue"] = 31500
purchaseMap["product"] = productMap
DOT.logPurchase(purchaseMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let purchase = NSMutableDictionary()
purchase["transaction_id"] = "CL39932003"
purchase["destination_a"] = "선릉역"
purchase["destination_b"] = "올림픽공원"
purchase["distance"] = 5.8
purchase["city"] = "서울"
purchase["car_id"] = "V39849"
purchase["car_type"] = "sedan"
purchase["driver_id"] = "DR3020"
purchase["price"] = 31500
purchase["currency"] = "KRW"
purchase["riding_time"] = 21
var product : [String: Any] = [:]
product["product_id"] = "C30403"
product["product_name"] = "베이직"
product["quantity"] = 1
product["revenue"] = 31500
purchase["product"] = product
DOT.logPurchase(purchase)
```

{% endtab %}

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

```objectivec
NSMutableDictionary *purchase = [[NSMutableDictionary alloc] init];
[purchase setValue:@"CL39932003" forKey:@"transaction_id"];
[purchase setValue:@"선릉역" forKey:@"destination_a"];
[purchase setValue:@"올림픽공원" forKey:@"destination_b"];
[purchase setValue:[NSNumber numberWithInt:5.8] forKey:@"distance"];
[purchase setValue:@"서울" forKey:@"city"];
[purchase setValue:@"V39849" forKey:@"car_id"];
[purchase setValue:@"sedan" forKey:@"car_type"];
[purchase setValue:@"DR3020" forKey:@"driver_id"];
[purchase setValue:[NSNumber numberWithInt:31500] forKey:@"price"];
[purchase setValue:@"KRW" forKey:@"currency"];
[purchase setValue:[NSNumber numberWithInt:21] forKey:@"riding_time"];
NSMutableDictionary *product = [[NSMutableDictionary alloc] init];
[product setValue:@"C30403" forKey:@"product_id"];
[product setValue:@"베이직" forKey:@"product_name"];
[product setValue:[NSNumber numberWithInt:1] forKey:@"quantity"];
[product setValue:[NSNumber numberWithInt:31500] forKey:@"revenue"];
[purchase setValue:@product forKey:@"product"]
[DOT logPurchase:purchase];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var purchase = new Object();
    purchase["transaction_id"] = "CL39932003";
    purchase["destination_a"] = "선릉역";
    purchase["destination_b"] = "올림픽공원";
    purchase["distance"] = 5.8;
    purchase["city"] = "서울";
    purchase["car_id"] = "V39849";
    purchase["car_type"] = "sedan";
    purchase["driver_id"] = "DR3020";
    purchase["price"] = 31500;
    purchase["currency"] = "KRW";
    purchase["riding_time"] = 21;
    var product = new Object();
    product["product_id"] = "C30403";
    product["product_name"] = "베이직";
    product["quantity"] = 1;
    product["revenue"] = 31500;
    purchase["product"] = product;
    DOT.logPurchase(purchase);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var purchase = new Object();
    purchase["transaction_id"] = "CL39932003";
    purchase["destination_a"] = "선릉역";
    purchase["destination_b"] = "올림픽공원";
    purchase["distance"] = 5.8;
    purchase["city"] = "서울";
    purchase["car_id"] = "V39849";
    purchase["car_type"] = "sedan";
    purchase["driver_id"] = "DR3020";
    purchase["price"] = 31500;
    purchase["currency"] = "KRW";
    purchase["riding_time"] = 21;
    var product = new Object();
    product["product_id"] = "C30403";
    product["product_name"] = "베이직";
    product["quantity"] = 1;
    product["revenue"] = 31500;
    purchase["product"] = product;
    WDOT.logPurchase(purchase);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map purchase = {};
purchase["transaction_id"] = "CL39932003";
purchase["destination_a"] = "선릉역";
purchase["destination_b"] = "올림픽공원";
purchase["distance"] = 5.8;
purchase["city"] = "서울";
purchase["car_id"] = "V39849";
purchase["car_type"] = "sedan";
purchase["driver_id"] = "DR3020";
purchase["price"] = 31500;
purchase["currency"] = "KRW";
purchase["riding_time"] = 21;
Map product = {};
product["product_id"] = "C30403";
product["product_name"] = "베이직";
product["quantity"] = 1;
product["revenue"] = 31500;
purchase["product"] = product;
DOT.logPurchase(purchase);


// webview 에서 호출 할 때
var purchase = new Object();
purchase["transaction_id"] = "CL39932003";
purchase["destination_a"] = "선릉역";
purchase["destination_b"] = "올림픽공원";
purchase["distance"] = 5.8;
purchase["city"] = "서울";
purchase["car_id"] = "V39849";
purchase["car_type"] = "sedan";
purchase["driver_id"] = "DR3020";
purchase["price"] = 31500;
purchase["currency"] = "KRW";
purchase["riding_time"] = 21;

var product = new Object();
product["product_id"] = "C30403";
product["product_name"] = "베이직";
product["quantity"] = 1;
product["revenue"] = 31500;

purchase["product"] = product;

window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logPurchase",
      data: purchase
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logPurchase(JSON.stringify({
    transaction_id : "CL39932003",
    destination_a : "선릉역",
    destination_b : "올림픽공원",
    distance : 5.8,
    city : "서울",
    car_id : "V39849",
    car_type : "sedan",
    driver_id : "DR3020",
    price : 31500,
    currency : "KRW",
    riding_time : 21,
    product : {
	    product_id : "C30403",
	    product_name : "베이직",
	    quantity : 1,
	    revenue : 31500,
    }
})); 

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logPurchase",
	data : {
	    transaction_id : "CL39932003",
	    destination_a : "선릉역",
	    destination_b : "올림픽공원",
	    distance : 5.8,
	    city : "서울",
	    car_id : "V39849",
	    car_type : "sedan",
	    driver_id : "DR3020",
	    price : 31500,
	    currency : "KRW",
	    riding_time : 21,
	    product : {
		    product_id : "C30403",
		    product_name : "베이직",
		    quantity : 1,
		    revenue : 31500,
	    }
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> purchase = new Dictionary<string, object>();
purchase.Add("transaction_id", "CL39932003");
purchase.Add("destination_a", "선릉역");
purchase.Add("destination_b", "올림픽공원");
purchase.Add("distance", 5.8);
purchase.Add("city", "서울");
purchase.Add("car_id", "V39849");
purchase.Add("car_type", "sedan");
purchase.Add("driver_id", "DR3020");
purchase.Add("price", 31500);
purchase.Add("currency", "KRW");
purchase.Add("riding_time", 21);
Dictionary<string, object> product = new Dictionary<string, object>();
product.Add("product_id", "C30403");
product.Add("product_name", "베이직");
product.Add("quantity", 1);
product.Add("revenue", 31500);
List<Dictionary<string, object>> productList = new List<Dictionary<string, object>>();
productList.Add(product);
purchase.Add("product", productList);
DOT.logPurchase(purchase);
```

{% endtab %}
{% endtabs %}

## 네비게이션 시작

목적지와 코스가 설정되어 주행안내가 시작된 시점에 아래 코드를 추가합니다.

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

<table data-header-hidden><thead><tr><th width="156.7142857142857">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>destination_a</td><td>선릉역</td><td>string</td><td>차량이 출발하는 지역명</td></tr><tr><td>destination_b</td><td>올림픽공원</td><td>string</td><td>차량이 도착할 지역명</td></tr><tr><td>distance</td><td>5.8</td><td>float</td><td>목적지까지의 거리를 km 단위로 입력</td></tr><tr><td>est_arrival_time</td><td>20</td><td>float</td><td>예상되는 주행시간을 분단위로 입력</td></tr></tbody></table>

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

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_navigate");
eventMap.put("destination_a", "선릉역");
eventMap.put("destination_b", "올림픽공원");
eventMap.put("distance", 5.8);
eventMap.put("est_arrival_time", 20);
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_navigate"
eventMap["destination_a"] = "선릉역"
eventMap["destination_b"] = "올림픽공원"
eventMap["distance"] = 5.8
eventMap["est_arrival_time"] = 20
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_navigate"
event["destination_a"] = "선릉역"
event["destination_b"] = "올림픽공원"
event["distance"] = 5.8
event["est_arrival_time"] = 20
DOT.logEvent(event)
```

{% endtab %}

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

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_navigate" forKey:@"event"];
[event setValue:@"선릉역" forKey:@"destination_a"];
[event setValue:@"올림픽공원" forKey:@"destination_b"];
[event setValue:[NSNumber numberWithInt:5.8] forKey:@"distance"];
[event setValue:[NSNumber numberWithInt:20] forKey:@"est_arrival_time"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_navigate";
    event["destination_a"] = "선릉역";
    event["destination_b"] = "올림픽공원";
    event["distance"] = 5.8;
    event["est_arrival_time"] = 20;
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_navigate";
    event["destination_a"] = "선릉역";
    event["destination_b"] = "올림픽공원";
    event["distance"] = 5.8;
    event["est_arrival_time"] = 20;
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_navigate";
event["destination_a"] = "선릉역";
event["destination_b"] = "올림픽공원";
event["distance"] = 5.8;
event["est_arrival_time"] = 20;
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
            event : "w_navigate",
            destination_a : "선릉역",
            destination_b : "올림픽공원",
            distance : 5.8,
            est_arrival_time : 20
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_navigate",
    destination_a : "선릉역",
    destination_b : "올림픽공원",
    distance : 5.8,
    est_arrival_time : 20
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_navigate",
	    destination_a : "선릉역",
	    destination_b : "올림픽공원",
	    distance : 5.8,
	    est_arrival_time : 20
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_navigate");
eventDic.Add("destination_a", "선릉역");
eventDic.Add("destination_b", "올림픽공원");
eventDic.Add("distance", 5.8);
eventDic.Add("est_arrival_time", 20);
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 네비게이션 종료

목적지에 도착하여 주행안내가 종료된 시점에 아래 코드를 추가합니다.

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

<table data-header-hidden><thead><tr><th width="182.7142857142857">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>destination_a</td><td>선릉역</td><td>string</td><td>차량이 출발하는 지역명</td></tr><tr><td>destination_b</td><td>올림픽공원</td><td>string</td><td>차량이 도착할 지역명</td></tr><tr><td>distance</td><td>5.8</td><td>float</td><td>실제 주행거리를 km 단위로 입력</td></tr><tr><td>riding_time</td><td>21</td><td>float</td><td>실제 주행시간을 분단위로 입력</td></tr></tbody></table>

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

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_end_navigation");
eventMap.put("destination_a", "선릉역");
eventMap.put("destination_b", "올림픽공원");
eventMap.put("distance", 5.8);
eventMap.put("riding_time", 21);
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_end_navigation"
eventMap["destination_a"] = "선릉역"
eventMap["destination_b"] = "올림픽공원"
eventMap["distance"] = 5.8
eventMap["est_arrival_time"] = 21
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_end_navigation"
event["destination_a"] = "선릉역"
event["destination_b"] = "올림픽공원"
event["distance"] = 5.8
event["riding_time"] = 21
DOT.logEvent(event)
```

{% endtab %}

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

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_end_navigation" forKey:@"event"];
[event setValue:@"선릉역" forKey:@"destination_a"];
[event setValue:@"올림픽공원" forKey:@"destination_b"];
[event setValue:[NSNumber numberWithInt:5.8] forKey:@"distance"];
[event setValue:[NSNumber numberWithInt:21] forKey:@"riding_time"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_end_navigation";
    event["destination_a"] = "선릉역";
    event["destination_b"] = "올림픽공원";
    event["distance"] = 5.8;
    event["riding_time"] = 21;
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_end_navigation";
    event["destination_a"] = "선릉역";
    event["destination_b"] = "올림픽공원";
    event["distance"] = 5.8;
    event["riding_time"] = 21;
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_end_navigation";
event["destination_a"] = "선릉역";
event["destination_b"] = "올림픽공원";
event["distance"] = 5.8;
event["riding_time"] = 21;
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
            event : "w_end_navigation",
            destination_a : "선릉역",
            destination_b : "올림픽공원",
            distance : 5.8,
            riding_time : 21
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_end_navigation",
    destination_a : "선릉역",
    destination_b : "올림픽공원",
    distance : 5.8,
    riding_time : 21
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_end_navigation",
	    destination_a : "선릉역",
	    destination_b : "올림픽공원",
	    distance : 5.8,
	    riding_time : 21
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_end_navigation");
eventDic.Add("destination_a", "선릉역");
eventDic.Add("destination_b", "올림픽공원");
eventDic.Add("distance", 5.8);
eventDic.Add("riding_time", 21);
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/mobility.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.
