Basic : 공통 이벤트
공통 이벤트란 버티컬을 불문하고 측정할 필요가 있는 인앱 이벤트들을 말합니다. 앱에 해당 기능이 없는 경우가 아니라면 공통 이벤트에 포함된 API는 되도록 많이 적용하는 것을 권장합니다.
☑️속성 중 Key 이름은 가이드에 나와있는 Key 이름을 그대로 사용 해 주세요. (임의로 변경시 대시보드에서 데이터 확인이 어렵습니다. > signupTp , loginTp 등)
회원가입
앱에서 회원가입이 완료되는 시점에 아래 코드를 추가합니다.
선택 속성
Key
Value 예시
Type
설명
signupTp
string
통합ID, 소셜계정, 이메일 가입 등 회원가입 유형 정보
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_signup_complete");
eventMap.put("signupTp", "email");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_signup_complete"
eventMap["signupTp"] = "email"
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_signup_complete"
event["signupTp"] = "email"
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_signup_complete" forKey:@"event"];
[event setValue:@"email" forKey:@"signupTp"];
[DOT logEvent:event];
var event = new Object();
event["event"] = "w_signup_complete";
event["signupTp"] = "email";
DOT.logEvent(event);
var event = new Object();
event["event"] = "w_signup_complete";
event["signupTp"] = "email";
WDOT.logEvent(event);
// .dart 에서 호출 할 때
Map signUp = {};
signUp["event"] = "w_signup_complete";
signUp["signupTp"] = "email";
DOT.logEvent(signUp);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_signup_complete",
signupTp : "email"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_signup_complete",
signupTp : "email"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_signup_complete",
signupTp : "email"
}
}));
Dictionary<string, object> eventDic= new Dictionary<string, object>();
eventDic.Add("event", "w_signup_complete");
eventDic.Add("signupTp", "email");
DOT.logEvent(eventDic);
유저 정보 측정
앱을 사용하는 유저에 대한 정보를 측정할 수 있는 API입니다. 유저에 대한 정보를 측정할 수 있는 key를 아래의 유저 선택 속성 중 필요 속성에 맞춰 선택하여 사용 해 주세요. 앱에서 로그인이 완료되는 시점에 아래 코드를 추가합니다.
유저 선택 속성
Key
Value 예시
설명
setGender
male
성별을 의미하는 영문자
setMemberGrade
신규회원
회원등급을 분류할 수 있는 정보
setAge
20-29
연령 또는 연령대
setMemberId
wisetracker
회원의 로그인 아이디
setAttr1 ~ 5 or ut1 ~ ut5
platinum
회원 등급 등 회원의 유형을 분류할 수 있는 정보
선택 속성
Key
Value 예시
설명
loginTp
kakao
통합ID, 소셜계정, 이메일 가입 등 로그인 유형 정보
User user = new User.Builder()
.setGender("male")
.setMemberGrade("LV.3")
.setAge("20-29")
.setMemberId("wisetracker")
.setAttr1("platinum")
.setAttr2("seoul")
.setAttr3("seongdonggu")
.setAttr4("player")
.setAttr5("보호자")
.build();
DOT.setUser(user);
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_login_complete");
eventMap.put("loginTp", "kakao");
DOT.logEvent(eventMap);
val user = User.Builder()
.setGender("female")
.setMemberGrade("LV.1")
.setAge("20-29")
.setMemberId("wisetracker")
.setAttr1("platinum")
.setAttr2("seoul")
.setAttr3("seongdonggu")
.setAttr4("player")
.setAttr5("보호자")
.build()
DOT.setUser(user)
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_login_complete"
eventMap["loginTp"] = "kakao"
DOT.logEvent(eventMap)
DOT.setUser(
User.builder({ (builder) in
let user = builder as! User
user.gender = "male"
user.memberGrade = "LV.1"
user.age = "20-29"
user.memberId = "wisetracker"
user.attribute1 = "platinum"
user.attribute2 = "seoul"
user.attribute3 = "seongdonggu"
user.attribute4 = "player"
user.attribute5 = "보호자"
})
)
let event = NSMutableDictionary()
event["event"] = "w_login_complete"
event["loginTp"] = "kakao"
DOT.logEvent(event)
[DOT setUser:
[User builder:^(User *user) {
user.gender = "male"
user.memberGrade = "LV.1"
user.age = "20-29"
user.memberId = "wisetracker"
user.attribute1 = "platinum"
user.attribute2 = "seoul"
user.attribute3 = "seongdonggu"
user.attribute4 = "player"
user.attribute5 = "보호자"
}]
];
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_login_complete" forKey:@"event"];
[event setValue:@"kakao" forKey:@"loginTp"];
[DOT logEvent:event];
DOT.setUser(User.setGender("male")
.setMemberGrade("LV.3")
.setAge("20-29")
.setMemberId("wisetracker")
.setAttr1("platinum")
.setAttr2("seoul")
.setAttr3("seongdonggu")
.setAttr4("player")
.setAttr5("보호자")
.build()
);
var event = new Object();
event["event"] = "w_login_complete";
event["loginTp"] = "kakao";
DOT.logEvent(event);
WDOT.setUser(RW_User.setGender("male")
.setMemberGrade("LV.3")
.setAge("20-29")
.setMemberId("wisetracker")
.setAttr1("platinum")
.setAttr2("seoul")
.setAttr3("seongdonggu")
.setAttr4("player")
.setAttr5("보호자")
.build()
);
var event = new Object();
event["event"] = "w_login_complete";
event["loginTp"] = "kakao";
if (typeof WDOT != 'undefined') {
WDOT.logEvent(event);
}
// .dart 에서 호출 할 때
Map user = {};
user["sx"] = "male";
user["mbl"] = "LV.3";
user["ag"] = "20-29";
user["mbid"] = "wisetracker";
user["ut1"] = "platinum";
user["ut2"] = "seoul";
user["ut3"] = "seongdonggu";
user["ut4"] = "player";
user["ut5"] = "보호자";
DOT.setUser(user);
Map loginTp = {};
loginTp["event"] = "w_login_complete";
loginTp["loginTp"] = "kakao";
DOT.logEvent(loginTp);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "setUser",
data: {
sx : "male",
mbl: "LV.3",
ag : "20-29",
mbid: "wisetracker",
ut1 : "platinum",
ut2: "seoul",
ut3: "seongdonggu",
ut4: "player",
ut5:"보호자"
}
}));
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_login_complete",
loginTp : "kakao"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.setUser(JSON.stringify({
sx : "male",
mbl: "LV.3",
ag : "20-29",
mbid: "wisetracker",
ut1 : "platinum",
ut2: "seoul",
ut3: "seongdonggu",
ut4: "player",
ut5:"보호자"
}));
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_login_complete",
loginTp : "kakao"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.setUser(JSON.stringify({
sx : "male",
mbl: "LV.3",
ag : "20-29",
mbid: "wisetracker",
ut1 : "platinum",
ut2: "seoul",
ut3: "seongdonggu",
ut4: "player",
ut5:"보호자"
}));
window.ReactNativeWebView.logEvent(JSON.stringify({
method:"logEvent",
data : {
event : "w_login_complete",
loginTp : "kakao"
}
}));
DOT.setUser(
new DOT_Model.User.Builder()
.setGender("female")
.setMemberGrade("LV.3")
.setAge("20-29")
.setMemberId("wisetracker")
.setAttr1("platinum")
.setAttr2("seoul")
.setAttr3("seongdonggu")
.setAttr4("player")
.setAttr5("보호자")
.build()
);
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_login_complete");
eventDic.Add("loginTp", "kakao");
DOT.logEvent(eventDic);
로그아웃 완료
로그아웃이 완료되는 시점에 해당 코드를 추가합니다.
선택 속성
Key
Value 예시
설명
kakao
통합ID, 소셜계정, 이메일 가입 등 로그인 유형 정보
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_logout");
eventMap.put("loginTp", "kakao");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_logout"
eventMap["loginTp"] = "kakao"
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_logout"
event["loginTp"] = "kakao"
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_login_complete" forKey:@"event"];
[event setValue:@"kakao" forKey:@"loginTp"];
[DOT logEvent:event];
var event = new Object();
event["event"] = "w_logout";
event["loginTp"] = "kakao";
DOT.logEvent(event);
var event = new Object();
event["event"] = "w_logout";
event["loginTp"] = "kakao";
WDOT.logEvent(event);
// .dart 에서 호출 할 때
Map loginTp = {};
loginTp["event"] = "w_logout";
loginTp["loginTp"] = "kakao";
DOT.logEvent(loginTp);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_logout",
loginTp : "kakao"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_logout",
loginTp : "kakao"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_logout",
loginTp : "kakao"
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_logout");
eventDic.Add("loginTp", "kakao");
DOT.logEvent(eventDic);
검색
검색이 완료된 화면에 아래 코드를 추가합니다.
선택 속성
Key
Value 예시
Type
설명
search_term
crop jeans
string
유저가 검색한 검색어
search_type
promotion
string
일반, 추천, 프로모션 등 검색 유형 정보
g20
1232
float
검색 결과로 출력된 아이템 수
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_search");
eventMap.put("search_term", "crop jeans");
eventMap.put("search_type", "promotion");
eventMap.put("g20", 1232);
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_search"
eventMap["search_term"] = "crop jeans"
eventMap["search_type"] = "promotion"
eventMap["g20"] = 1232
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_search"
event["search_term"] = "crop jeans"
event["search_type"] = "promotion"
event["g20"] = 1232
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_search" forKey:@"event"];
[event setValue:@"crop jeans" forKey:@"search_term"];
[event setValue:@"promotion" forKey:@"search_type"];
[event setValue:[NSNumber numberWithInt:1232] forKey:@"g20"];
[DOT logEvent:event];
var event = new Object();
event["event"] = "w_search";
event["search_term"] = "crop jeans";
event["search_type"] = "promotion";
event["g20"] = 1232;
DOT.logEvent(event);
var event = new Object();
event["event"] = "w_search";
event["search_term"] = "crop jeans";
event["search_type"] = "promotion";
event["g20"] = 1232;
WDOT.logEvent(event);
// .dart 에서 호출 할 때
Map searchTp = {};
searchTp["event"] = "w_search";
searchTp["search_term"] = "crop jeans";
searchTp["search_type"] = "promotion";
searchTp["g20"] = 1232;
DOT.logEvent(searchTp);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_search",
search_term : "crop jeans",
search_type : "promotion",
g20 : 1232
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_search",
search_term : "crop jeans",
search_type : "promotion",
g20 : 1232
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_search",
search_term : "crop jeans",
search_type : "promotion",
g20 : 1232
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "search");
eventDic.Add("search_term", "crop jeans");
eventDic.Add("search_type", "promotion");
eventDic.Add("g20", 1232);
DOT.logEvent(eventDic);
프로모션 조회
프로모션 상세화면에 아래 코드를 추가합니다.
선택 속성
Key
Value 예시
Type
설명
promotion_id
E200905605
string
프로모션 고유번호
promotion_name
10월 COUPON PACK
string
프로모션 명칭
Map<String, Object> pageMap = new HashMap<>();
pageMap.put("event", "w_view_promotion");
pageMap.put("promotion_id", "E200905605");
pageMap.put("promotion_name", "10월 COUPON PACK");
DOT.logScreen(pageMap);
val pageMap = mutableMapOf<String,Any>()
pageMap["event"] = "w_view_promotion"
pageMap["promotion_id"] = "E200905605"
pageMap["promotion_name"] = "7월 COUPON PACK"
DOT.logScreen(pageMap)
var screen = NSMutableDictionary()
screen["event"] = "w_view_promotion"
screen["promotion_id"] = "E200905605"
screen["promotion_name"] = "10월 COUPON PACK"
DOT.logScreen(screen)
NSMutableDictionary *screen = [[NSMutableDictionary alloc] init];
[screen setValue:@"w_view_promotion" forKey:@"event"];
[screen setValue:@"E200905605" forKey:@"promotion_id"];
[screen setValue:@"10월 COUPON PACK" forKey:@"promotion_name"];
[DOT logScreen:screen];
var screen = new Object();
screen["event"] = "w_view_promotion";
screen["promotion_id"] = "E200905605";
screen["promotion_name"] = "10월 COUPON PACK";
DOT.logScreen(screen);
var screen = new Object();
screen["event"] = "w_view_promotion";
screen["promotion_id"] = "E200905605";
screen["promotion_name"] = "10월 COUPON PACK";
WDOT.onStartPage(screen);
// .dart 에서 호출 할 때
Map promotion = {};
promotion["event"] = "w_view_promotion";
promotion["promotion_id"] = "E200905605";
promotion["promotion_name"] = "10월 COUPON PACK";
DOT.logScreen(promotion);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logScreen",
data: {
event : "w_view_promotion",
promotion_id : "E200905605",
promotion_name : "10월 COUPON PACK"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge != null &&
(NativeModules.DotReactBridge.onStartPage(),
NativeModules.DotReactBridge.logScreen(JSON.stringify({
event : "w_view_promotion",
promotion_id : "E200905605",
promotion_name : "10월 COUPON PACK"
}),
));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logScreen",
data : {
event : "w_view_promotion",
promotion_id : "E200905605",
promotion_name : "10월 COUPON PACK"
}
}));
Dictionary<string, object> page = new Dictionary<string, object>();
page.Add("event", "w_view_promotion");
page.Add("promotion_id", "E200905605");
page.Add("promotion_name", "10월 COUPON PACK");
DOT.logScreen(page);
컨텐츠 조회
컨텐츠 상세화면에 아래 코드를 추가합니다.
선택 속성
Key
Value 예시
Type
설명
content_id
1912012739
string
컨텐츠 고유번호
content_name
깊은잠 토퍼 매트리스 리뷰
string
컨텐츠 명칭
Map<String, Object> pageMap = new HashMap<>();
pageMap.put("event", "w_view_contents");
pageMap.put("content_id", "1912012739");
pageMap.put("content_name", "깊은잠 토퍼 매트리스 리뷰");
DOT.logScreen(pageMap);
val pageMap = mutableMapOf<String,Any>()
pageMap["event"] = "w_view_contents"
pageMap["content_id"] = "1912012739"
pageMap["content_name"] = "깊은잠 토퍼 매트리스 리뷰"
DOT.logScreen(pageMap)
var screen = NSMutableDictionary()
screen["event"] = "w_view_contents"
screen["content_id"] = "1912012739"
screen["content_name"] = "깊은잠 토퍼 매트리스 리뷰"
DOT.logScreen(screen)
NSMutableDictionary *screen = [[NSMutableDictionary alloc] init];
[screen setValue:@"w_view_contents" forKey:@"event"];
[screen setValue:@"1912012739" forKey:@"content_id"];
[screen setValue:@"깊은잠 토퍼 매트리스 리뷰" forKey:@"content_name"];
[DOT logScreen:screen];
var screen = new Object();
screen["event"] = "w_view_contents";
screen["content_id"] = "1912012739";
screen["content_name"] = "깊은잠 토퍼 매트리스 리뷰";
DOT.logScreen(screen);
var screen = new Object();
screen["event"] = "w_view_contents";
screen["content_id"] = "1912012739";
screen["content_name"] = "깊은잠 토퍼 매트리스 리뷰";
WDOT.onStartPage(screen);
// .dart 에서 호출 할 때
Map content = {};
content["event"] = "w_view_contents";
content["content_id"] = "1912012739";
content["content_name"] = "깊은잠 토퍼 매트리스 리뷰";
DOT.logScreen(content);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logScreen",
data: {
event : "w_view_contents",
content_id : "1912012739",
content_name : "깊은잠 토퍼 매트리스 리뷰"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge != null &&
(NativeModules.DotReactBridge.onStartPage(),
NativeModules.DotReactBridge.logScreen(JSON.stringify({
event : "w_view_contents",
content_id : "1912012739",
content_name : "깊은잠 토퍼 매트리스 리뷰"
}),
));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logScreen",
data : {
event : "w_view_contents",
content_id : "1912012739",
content_name : "깊은잠 토퍼 매트리스 리뷰"
}
}));
Dictionary<string, object> page = new Dictionary<string, object>();
page.Add("event", "w_view_contents");
page.Add("content_id", "1912012739");
page.Add("content_name", "깊은잠 토퍼 매트리스 리뷰");
DOT.logScreen(page);
전화 문의
전화 문의 관련 화면에 아래 코드를 추가합니다.
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_contact_by_phone");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_contact_by_phone"
DOT.logEvent(eventMap)
var screen = NSMutableDictionary()
screen["event"] = "w_contact_by_phone"
DOT.logScreen(screen)
NSMutableDictionary *screen = [[NSMutableDictionary alloc] init];
[screen setValue:@"w_contact_by_phone" forKey:@"event"];
[DOT logScreen:screen];
var screen = new Object();
screen["event"] = "w_contact_by_phone";
DOT.logScreen(screen);
var screen = new Object();
screen["event"] = "w_contact_by_phone";
WDOT.logEvent(screen);
// .dart 에서 호출 할 때
Map byPhone = {};
byPhone["event"] = "w_contact_by_phone";
DOT.logEvent(byPhone);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_contact_by_phone"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_contact_by_phone"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_contact_by_phone"
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_contact_by_phone");
DOT.logEvent(eventDic)
카카오톡 문의
카카오톡 문의 관련 화면에 아래 코드를 추가합니다.
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_contact_by_kakao");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_contact_by_kakao"
DOT.logEvent(eventMap)
var screen = NSMutableDictionary()
screen["event"] = "w_contact_by_kakao"
DOT.logScreen(screen)
NSMutableDictionary *screen = [[NSMutableDictionary alloc] init];
[screen setValue:@"w_contact_by_kakao" forKey:@"event"];
[DOT logScreen:screen];
var screen = new Object();
screen["event"] = "w_contact_by_kakao";
DOT.logScreen(screen);
var screen = new Object();
screen["event"] = "w_contact_by_kakao";
WDOT.logEvent(screen);
// .dart 에서 호출 할 때
Map byPhone = {};
byPhone["event"] = "w_contact_by_phone";
DOT.logEvent(byPhone);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_contact_by_kakao"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_contact_by_kakao"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_contact_by_kakao"
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_contact_by_kakao");
DOT.logEvent(eventDic)
블로그 방문하기
블로그 방문하기 관련 화면에 아래 코드를 추가합니다.
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_blog_link");
DOT.logScreen(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_blog_link"
DOT.logScreen(eventMap)
var screen = NSMutableDictionary()
screen["event"] = "w_blog_link"
DOT.logScreen(screen)
NSMutableDictionary *screen = [[NSMutableDictionary alloc] init];
[screen setValue:@"w_blog_link" forKey:@"event"];
[DOT logScreen:screen];
var screen = new Object();
screen["event"] = "w_blog_link";
DOT.logScreen(screen);
var screen = new Object();
screen["event"] = "w_blog_link";
WDOT.logScreen(screen);
// .dart 에서 호출 할 때
Map blogLink = {};
blogLink["event"] = "w_blog_link";
DOT.logScreen(blogLink);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logScreen",
data: {
event : "w_blog_link"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logScreen(JSON.stringify({
event : "w_blog_link"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logScreen",
data : {
event : "w_blog_link"
}
}));
Dictionary<string, object> page = new Dictionary<string, object>();
page.Add("event", "w_blog_link");
DOT.logScreen(page);
클릭 이벤트
유저가 앱 내에서 메뉴, 배너 등을 클릭하는 행동을 일종의 이벤트로써 측정하기 위해 사용하는 API입니다. 클릭 가능한 모든 대상에 적용할 필요는 없으며, 반드시 측정할 필요가 있는 대상에만 적용하는 것을 권장합니다.
메뉴 클릭
메뉴가 클릭된 시점에 아래 코드를 추가합니다.
선택 속성
Key
Value 예시
Type
설명
menu_name
신상품
string
메뉴 명칭
placement
GNB
string
노출 순서나 배치된 위치 정보
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_click_menu");
eventMap.put("menu_name", "신상품");
eventMap.put("placement", "GNB");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_click_menu"
eventMap["menu_name"] = "신상품"
eventMap["placement"] = "GNB"
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_click_menu"
event["menu_name"] = "신상품"
event["placement"] = "GNB"
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_click_menu" forKey:@"event"];
[event setValue:@"신상품" forKey:@"menu_name"];
[event setValue:@"GNB" forKey:@"placement"]
[DOT logEvent:event];
var event = new Object();
event["event"] = "w_click_menu";
event["menu_name"] = "신상품";
event["placement"] = "GNB";
DOT.logEvent(event);
var event = new Object();
event["event"] = "w_click_menu";
event["menu_name"] = "신상품";
event["placement"] = "GNB";
WDOT.logEvent(event);
// .dart 에서 호출 할 때
Map menuClick = {};
menuClick["event"] = "w_click_menu";
menuClick["menu_name"] = "신상품";
menuClick["placement"] = "GNB";
DOT.logEvent(menuClick);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_click_menu",
menu_name : "신상품",
placement : "GNB"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_click_menu",
menu_name : "신상품",
placement : "GNB"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_click_menu",
menu_name : "신상품",
placement : "GNB"
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_click_menu");
eventDic.Add("menu_name", "신상품");
eventDic.Add("placement", "GNB");
DOT.logEvent(eventDic);
배너 클릭
배너가 클릭된 시점에 아래 코드를 추가합니다.
선택 속성
Key
Value 예시
Type
설명
banner_name
ARKO Pre-order
string
배너 명칭
placement
3
string
노출 순서나 배치된 위치 정보
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_click_banner");
eventMap.put("banner_name", "ARKO Pre-order");
eventMap.put("placement", "3");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_click_banner"
eventMap["banner_name"] = "ARKO Pre-order"
eventMap["placement"] = "3"
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_click_banner"
event["banner_name"] = "ARKO Pre-order"
event["placement"] = "3"
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_click_banner" forKey:@"event"];
[event setValue:@"ARKO Pre-order" forKey:@"banner_name"];
[event setValue:@"3" forKey:@"placement"];
[DOT logEvent:event];
var event = new Object();
event["event"] = "w_click_banner";
event["banner_name"] = "ARKO Pre-order";
event["placement"] = "3";
DOT.logEvent(event);
var event = new Object();
event["event"] = "w_click_banner";
event["banner_name"] = "ARKO Pre-order";
event["placement"] = "3";
WDOT.logEvent(event);
// .dart 에서 호출 할 때
Map bannerClick = {};
bannerClick["event"] = "w_click_banner";
bannerClick["banner_name"] = "ARKO Pre-order";
bannerClick["placement"] = "3";
DOT.logEvent(bannerClick);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_click_banner",
banner_name : "ARKO Pre-order",
placement : "3"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_click_banner",
banner_name : "ARKO Pre-order",
placement : "3"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_click_banner",
banner_name : "ARKO Pre-order",
placement : "3"
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_click_banner");
eventDic.Add("banner_name", "ARKO Pre-order");
eventDic.Add("placement", "3");
DOT.logEvent(eventDic);
버튼 클릭
버튼이 클릭된 시점에 아래 코드를 추가합니다.
선택 속성
Key
Value 예시
Type
설명
button_name
Free 30-day Trial
string
버튼 명칭
placement
subscription CTA
string
노출 순서나 배치된 위치 정보
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_click_button");
eventMap.put("button_name", "Free 30-day Trial");
eventMap.put("placement", "subsctiption CTA");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_click_button"
eventMap["button_name"] = "Free 30-day Trial"
eventMap["placement"] = "subsctiption CTA"
DOT.logEvent(eventMap)
var event = NSMutableDictionary()
event["event"] = "w_click_button"
event["button_name"] = "Free 30-day Trial"
event["placement"] = "subsctiption CTA"
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_click_button" forKey:@"event"];
[event setValue:@"Free 30-day Trial" forKey:@"button_name"];
[event setValue:@"subsctiption CTA" forKey:@"placement"];
[DOT logEvent:event];
var event = new Object();
event["event"] = "w_click_button";
event["button_name"] = "Free 30-day Trial";
event["placement"] = "subsctiption CTA";
DOT.logEvent(event);
var event = new Object();
event["event"] = "w_click_button";
event["button_name"] = "Free 30-day Trial";
event["placement"] = "subsctiption CTA";
WDOT.logEvent(event);
// .dart 에서 호출 할 때
Map buttonClick = {};
buttonClick["event"] = "w_click_button";
buttonClick["button_name"] = "Free 30-day Trial";
buttonClick["placement"] = "subsctiption CTA";
DOT.logEvent(buttonClick);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_click_button",
button_name : "Free 30-day Trial",
placement : "subsctiption CTA"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_click_button",
button_name : "Free 30-day Trial",
placement : "subsctiption CTA"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_click_button",
button_name : "Free 30-day Trial",
placement : "subsctiption CTA"
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_click_button");
eventDic.Add("button_name", "Free 30-day Trial");
eventDic.Add("placement", "subscription CTA");
DOT.logEvent(eventDic);
아이템 클릭
배너, 메뉴, 버튼 등으로 분류하기 어려운 요소가 있을 수 있습니다. 이런 요소가 클릭된 시점에 아래 코드를 적용합니다.
선택 속성
Key
Value 예시
Type
설명
item_name
최근 3일 급등종목
string
아이템 명칭
placement
추천영역 2
string
노출 순서나 배치된 위치 정보
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_click_item");
eventMap.put("item_name", "최근 3일 급등종목");
eventMap.put("placement", "추천영역 2");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_click_item"
eventMap["item_name"] = "최근 3일 급등종목"
eventMap["placement"] = "추천영역 2"
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_click_item"
event["item_name"] = "최근 3일 급등종목"
event["placement"] = "추천영역 2"
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_click_item" forKey:@"event"];
[event setValue:@"최근 3일 급등종목" forKey:@"item_name"];
[event setValue:@"추천영역 2" forKey:@"placement"];
[DOT logEvent:event];
var event = new Object();
event["event"] = "w_click_item";
event["item_name"] = "최근 3일 급등종목";
event["placement"] = "추천영역 2";
DOT.logEvent(event);
var event = new Object();
event["event"] = "w_click_item";
event["item_name"] = "최근 3일 급등종목";
event["placement"] = "추천영역 2";
WDOT.logEvent(event);
// .dart 에서 호출 할 때
Map itemClick = {};
itemClick["event"] = "w_click_item";
itemClick["item_name"] = "최근 3일 급등종목";
itemClick["placement"] = "추천영역 2";
DOT.logEvent(itemClick);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_click_item",
item_name : "최근 3일 급등종목",
placement : "추천영역 2"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_click_item",
item_name : "최근 3일 급등종목",
placement : "추천영역 2"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_click_item",
item_name : "최근 3일 급등종목",
placement : "추천영역 2"
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_click_item");
eventDic.Add("item_name", "최근 3일 급등종목");
eventDic.Add("placement", "추천영역 2");
DOT.logEvent(eventDic);
공유하기
SMS 및 다른 앱을 통한 상품/컨텐츠 공유를 완료한 시점에 아래 코드를 추가합니다.
선택 속성
Key
Value 예시
Type
설명
share_type
string
공유된 미디어
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_share");
eventMap.put("share_type", "facebook");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_share"
eventMap["share_type"] = "facebook"
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_share"
event["share_type"] = "facebook"
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_share" forKey:@"event"];
[event setValue:@"facebook" forKey:@"share_type"];
[DOT logEvent:event];
var event = new Object();
event["event"] = "w_share";
event["share_type"] = "facebook";
DOT.logEvent(event);
var event = new Object();
event["event"] = "w_share";
event["share_type"] = "facebook";
WDOT.logEvent(event);
// .dart 에서 호출 할 때
Map share = {};
share["event"] = "w_share";
share["share_type"] = "facebook";
DOT.logEvent(share);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_share",
share_type : "facebook"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_share",
share_type : "facebook"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_share",
share_type : "facebook"
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_share");
eventDic.Add("share_type", "facebook");
DOT.logEvent(eventDic);
초대하기
SMS 및 다른 앱을 통해 초대하기를 완료한 시점에 아래 코드를 추가합니다.
선택 속성
Key
Value 예시
Type
설명
invite_type
string
초대된 미디어
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_invite");
eventMap.put("invite_type", "instagram");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_invite"
eventMap["invite_type"] = "instagram"
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_invite"
event["invite_type"] = "instagram"
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_invite" forKey:@"event"];
[event setValue:@"instagram" forKey:@"invite_type"];
[DOT logEvent:event];
var event = new Object();
event["event"] = "w_invite";
event["invite_type"] = "instagram";
DOT.logEvent(event);
var event = new Object();
event["event"] = "w_invite";
event["invite_type"] = "instagram";
WDOT.logEvent(event);
// .dart 에서 호출 할 때
Map invite = {};
invite["event"] = "w_invite";
invite["invite_type"] = "instagram";
DOT.logEvent(invite);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_invite",
invite_type : "instagram"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_invite",
invite_type : "instagram"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_invite",
invite_type : "instagram"
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_invite");
eventDic.Add("invite_type", "instagram");
DOT.logEvent(eventDic);
댓글 달기
댓글 달기를 완료한 시점에 아래 코드를 추가합니다.
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_replied");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_replied"
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_replied"
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_replied" forKey:@"event"];
[DOT logEvent:event];
var event = new Object();
event["event"] = "w_replied";
DOT.logEvent(event);
var event = new Object();
event["event"] = "w_replied";
WDOT.logEvent(event);
// .dart 에서 호출 할 때
Map replied = {};
replied["event"] = "w_replied";
DOT.logEvent(replied);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_replied"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_replied"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_replied"
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_replied");
DOT.logEvent(eventDic);
리뷰 조회하기
리뷰를 조회하는 시점에 아래 코드를 추가합니다.
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_see_review");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_see_review"
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_see_review"
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_see_review" forKey:@"event"];
[DOT logEvent:event];
var event = new Object();
event["event"] = "w_see_review";
DOT.logEvent(event);
var event = new Object();
event["event"] = "w_see_review";
WDOT.logEvent(event);
// .dart 에서 호출 할 때
Map reviewSee = {};
reviewSee["event"] = "w_see_review";
DOT.logEvent(reviewSee);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_see_review"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_see_review"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_see_review"
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_see_review");
DOT.logEvent(eventDic);
리뷰 작성하기
리뷰 작성을 완료한 시점에 아래 코드를 추가합니다.
선택 속성
Key
Value 예시
Type
설명
g25
5
float
리뷰별점
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_add_review");
eventMap.put("g25", 5);
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_add_review"
eventMap["g25"] = 5
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_add_review"
event["g25"] = 5
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_add_review" forKey:@"event"];
[event setValue:[NSNumber numberWithInt:5] forKey:@"g25"];
[DOT logEvent:event];
var event = new Object();
event["event"] = "w_add_review";
event["g25"] = 5;
DOT.logEvent(event);
var event = new Object();
event["event"] = "w_add_review";
event["g25"] = 5;
WDOT.logEvent(event);
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_add_review";
event["g25"] = 5;
DOT.logEvent(reviewAdd);
// webview 에서 호출 할 때
var event = new Object();
event["event"] = "w_add_review";
event["g25"] = 5;
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: event
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_add_review",
g25 : 5,
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_add_review",
g25 : 5,
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_add_review");
eventDic.Add("g25", 5);
DOT.logEvent(eventDic);
평가하기
평가하기를 완료하는 시점에 아래 코드를 추가합니다.
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_rated");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_rated"
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_rated"
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_rated" forKey:@"event"];
[DOT logEvent:event];
var event = new Object();
event["event"] = "w_rated";
DOT.logEvent(event);
var event = new Object();
event["event"] = "w_rated";
WDOT.logEvent(event);
// .dart 에서 호출 할 때
Map rated = {};
rated["event"] = "w_rated";
DOT.logEvent(rated);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_rated"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_rated"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_rated"
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_rated");
DOT.logEvent(eventDic);
구독 취소하기
구독 취소하기를 완료하는 시점에 아래 코드를 추가합니다.
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_unsubscribe");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_unsubscribe"
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_unsubscribe"
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_unsubscribe" forKey:@"event"];
[DOT logEvent:event];
var event = new Object();
event["event"] = "w_unsubscribe";
DOT.logEvent(event);
var event = new Object();
event["event"] = "w_unsubscribe";
WDOT.logEvent(event);
// .dart 에서 호출 할 때
Map unsubscribe = {};
unsubscribe["event"] = "w_unsubscribe";
DOT.logEvent(unsubscribe);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_unsubscribe"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_unsubscribe"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_unsubscribe"
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_unsubscribe");
DOT.logEvent(eventDic);
Last updated