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