> For the complete documentation index, see [llms.txt](https://document.wisetracker.co.kr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://document.wisetracker.co.kr/v2-developer/in-app-event/event-list/messaging.md).

# Messaging : 푸시/인앱 메시지

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

## 푸시메시지 알림 허용 <a href="#push_noti_authorized" id="push_noti_authorized"></a>

푸시메시지 알림 허용이 완료된 시점에 아래 코드를 추가합니다.

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

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

{% endtab %}

{% tab title="Kotlin" %}

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

{% endtab %}

{% tab title="Swift" %}

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

{% endtab %}

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

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

{% endtab %}

{% tab title="Mobile Webview" %}

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

{% endtab %}

{% tab title="Website" %}

```javascript
// 웹사이트의 푸시수신동의여부는 해당사항 없습니다.
```

{% endtab %}

{% tab title="Flutter" %}

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

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

{% endtab %}

{% tab title="ReactNative" %}

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

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

{% endtab %}

{% tab title="C#" %}

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

{% endtab %}
{% endtabs %}

## 푸시메시지 알림 거부 <a href="#push_noti_denied" id="push_noti_denied"></a>

푸시메시지 알림 거부가 완료된 시점에 아래 코드를 추가합니다.

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

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

{% endtab %}

{% tab title="Kotlin" %}

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

{% endtab %}

{% tab title="Swift" %}

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

{% endtab %}

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

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

{% endtab %}

{% tab title="Mobile Webview" %}

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

{% endtab %}

{% tab title="Website" %}

```javascript
// 웹사이트의 푸시수신동의여부는 해당사항 없습니다.
```

{% endtab %}

{% tab title="Flutter" %}

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

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

{% endtab %}

{% tab title="ReactNative" %}

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

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

{% endtab %}

{% tab title="C#" %}

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

{% endtab %}
{% endtabs %}

## 인앱메시지 노출&#x20;

인앱메시지가 노출된 시점에 아래 코드를 추가합니다.

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

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

{% endtab %}

{% tab title="Kotlin" %}

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

{% endtab %}

{% tab title="Swift" %}

```swift
var screen = NSMutableDictionary()
screen["event"] = "w_inappmsg_impression"
DOT.logScreen(screen)
```

{% endtab %}

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

```objectivec
NSMutableDictionary *screen = [[NSMutableDictionary alloc] init];
[screen setValue:@"w_inappmsg_impression" forKey:@"event"];
[DOT logScreen:screen];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var screen = new Object();
    screen["event"] = "w_inappmsg_impression";
    DOT.logScreen(screen);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var screen = new Object();
    screen["event"] = "w_inappmsg_impression";
    WDOT.logScreen(screen);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map impression = {};
notification["event"] = "w_inappmsg_impression";
DOT.logScreen(impression);

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

{% endtab %}

{% tab title="ReactNative" %}

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

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

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> page = new Dictionary<string, object>();
page.Add("event", "w_inappmsg_impression");
DOT.logScreen(page);
```

{% endtab %}
{% endtabs %}

## 인앱메시지 클릭

인앱메시지를 클릭한 시점에 아래 코드를 추가합니다.

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

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

{% endtab %}

{% tab title="Kotlin" %}

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

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_inappmsg_click"
DOT.logEvent(event)
```

{% endtab %}

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

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

{% endtab %}

{% tab title="Mobile Webview" %}

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

{% endtab %}

{% tab title="Website" %}

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

{% endtab %}

{% tab title="Flutter" %}

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

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

{% endtab %}

{% tab title="ReactNative" %}

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

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

{% endtab %}

{% tab title="C#" %}

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

{% endtab %}
{% endtabs %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
