tagworks-sdk-v1-react 1.1.20 → 1.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/LICENSE +3 -1
  2. package/README.md +35 -552
  3. package/android/build.gradle +1 -1
  4. package/android/src/main/java/com/tagworkssdkv1/DataBundleModule.kt +340 -366
  5. package/android/src/main/java/com/tagworkssdkv1/OnCmsBannerViewManager.kt +15 -4
  6. package/android/src/main/java/com/tagworkssdkv1/TagWorksDeeplinkModule.kt +117 -0
  7. package/android/src/main/java/com/tagworkssdkv1/TagWorksModule.kt +417 -376
  8. package/android/src/main/java/com/tagworkssdkv1/TagWorksPopupModule.kt +22 -26
  9. package/android/src/main/java/com/tagworkssdkv1/TagworksSdkV1Package.kt +3 -2
  10. package/ios/DataBundleModule.swift +8 -8
  11. package/ios/OnCmsBannerViewManager.swift +6 -5
  12. package/ios/TagWorksDeeplinkModule.swift +64 -0
  13. package/ios/TagWorksDeeplinkModuleBridge.m +19 -0
  14. package/ios/TagWorksModule.swift +113 -27
  15. package/ios/TagWorksModuleBridge.m +20 -2
  16. package/ios/TagWorksPopupModule.swift +41 -18
  17. package/ios/TagWorksPopupModuleBridge.m +2 -0
  18. package/lib/commonjs/RegisterOnCmsBannerView.js +10 -0
  19. package/lib/commonjs/RegisterOnCmsBannerView.js.map +1 -0
  20. package/lib/commonjs/TagWorksDeeplink.js +48 -0
  21. package/lib/commonjs/TagWorksDeeplink.js.map +1 -0
  22. package/lib/commonjs/autoTrackers/ReactNavigationPageTracker.js +135 -0
  23. package/lib/commonjs/autoTrackers/ReactNavigationPageTracker.js.map +1 -0
  24. package/lib/commonjs/index.js +36 -10
  25. package/lib/commonjs/index.js.map +1 -1
  26. package/lib/module/RegisterOnCmsBannerView.js +6 -0
  27. package/lib/module/RegisterOnCmsBannerView.js.map +1 -0
  28. package/lib/module/TagWorksDeeplink.js +44 -0
  29. package/lib/module/TagWorksDeeplink.js.map +1 -0
  30. package/lib/module/autoTrackers/ReactNavigationPageTracker.js +131 -0
  31. package/lib/module/autoTrackers/ReactNavigationPageTracker.js.map +1 -0
  32. package/lib/module/index.js +15 -11
  33. package/lib/module/index.js.map +1 -1
  34. package/lib/typescript/commonjs/babel.config.d.ts +2 -0
  35. package/lib/typescript/commonjs/babel.config.d.ts.map +1 -0
  36. package/lib/typescript/commonjs/src/RegisterOnCmsBannerView.d.ts +3 -0
  37. package/lib/typescript/commonjs/src/RegisterOnCmsBannerView.d.ts.map +1 -0
  38. package/lib/typescript/commonjs/src/TagWorksDeeplink.d.ts +23 -0
  39. package/lib/typescript/commonjs/src/TagWorksDeeplink.d.ts.map +1 -0
  40. package/lib/typescript/commonjs/src/autoTrackers/ReactNavigationPageTracker.d.ts +12 -0
  41. package/lib/typescript/commonjs/src/autoTrackers/ReactNavigationPageTracker.d.ts.map +1 -0
  42. package/lib/typescript/commonjs/src/index.d.ts +9 -3
  43. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  44. package/lib/typescript/module/babel.config.d.ts +2 -0
  45. package/lib/typescript/module/babel.config.d.ts.map +1 -0
  46. package/lib/typescript/module/src/RegisterOnCmsBannerView.d.ts +3 -0
  47. package/lib/typescript/module/src/RegisterOnCmsBannerView.d.ts.map +1 -0
  48. package/lib/typescript/module/src/TagWorksDeeplink.d.ts +23 -0
  49. package/lib/typescript/module/src/TagWorksDeeplink.d.ts.map +1 -0
  50. package/lib/typescript/module/src/autoTrackers/ReactNavigationPageTracker.d.ts +12 -0
  51. package/lib/typescript/module/src/autoTrackers/ReactNavigationPageTracker.d.ts.map +1 -0
  52. package/lib/typescript/module/src/index.d.ts +9 -3
  53. package/lib/typescript/module/src/index.d.ts.map +1 -1
  54. package/package.json +28 -8
  55. package/src/RegisterOnCmsBannerView.js +5 -0
  56. package/src/TagWorksDeeplink.js +45 -0
  57. package/src/autoTrackers/ReactNavigationPageTracker.js +137 -0
  58. package/src/index.js +48 -0
  59. package/tagworks-sdk-v1-react.podspec +9 -2
  60. package/android/src/main/java/com/tagworkssdkv1/TagworksSdkV1Module.kt +0 -25
  61. package/android/src/main/res/drawable/default_img.png +0 -0
  62. package/src/index.tsx +0 -27
@@ -5,446 +5,487 @@ import com.facebook.react.bridge.Callback
5
5
  import com.facebook.react.bridge.ReactApplicationContext
6
6
  import com.facebook.react.bridge.ReactContextBaseJavaModule
7
7
  import com.facebook.react.bridge.ReactMethod
8
+ import com.facebook.react.bridge.ReadableArray
8
9
  import com.facebook.react.bridge.ReadableMap
10
+ import com.facebook.react.bridge.UiThreadUtil
9
11
  import com.obzen.tagworks.TagWorks
10
12
  import com.obzen.tagworks.TagWorksConfig
11
- import com.obzen.tagworks.data.DataBundle
12
- import com.obzen.tagworks.data.Dimension
13
- import com.obzen.tagworks.data.DimensionType
14
- import com.obzen.tagworks.util.Logger
15
- import com.obzen.tagworks.util.Logger.Companion.d
16
- import com.obzen.tagworks.util.WebAppInterface.Companion.MessageHandlerName
13
+ import com.obzen.tagworks.common.Logger
14
+ import com.obzen.tagworks.event.data.DataBundle
15
+ import com.obzen.tagworks.event.data.Dimension
16
+ import com.obzen.tagworks.event.data.DimensionType
17
+ import com.obzen.tagworks.web.WebAppInterface
18
+ import com.obzen.tagworks.web.WebAppInterface.Companion.MessageHandlerName
19
+ import com.obzen.tagworks.web.WebAppOnCmsInterface
17
20
  import org.json.JSONArray
18
21
  import org.json.JSONObject
19
22
 
20
23
  class TagWorksModule(reactContext: ReactApplicationContext):ReactContextBaseJavaModule(reactContext) {
21
24
 
22
- /**
23
- * js에서 호출하는 TagWorksModule 네이밍
24
- */
25
- override fun getName(): String {
26
- return "TagWorksModule"
27
- }
28
-
29
- /**
30
- * config SDK 초기화 함수
31
- */
32
- @ReactMethod
33
- fun initializeTagWorks(
34
- siteId:String,
35
- baseUrl:String,
36
- isUseIntervals:Boolean,
37
- dispatchInterval:Double,
38
- sessionTimeout:Double,
39
- isManualDispatch:Boolean,
40
- appVersion:String?,
41
- appName:String?,
42
- isUseDynamicParameter:Boolean
43
- ) {
44
- val config = TagWorksConfig.Builder()
45
- .setSiteId(siteId)
46
- .setBaseUrl(baseUrl)
47
- .setDispatchInterval(dispatchInterval.toLong())
48
- .setSessionTimeOut(sessionTimeout.toLong()*1000)
49
- .setAppVersion(appVersion)
50
- .setAppName(appName)
51
- .setManualDispatch(isManualDispatch)
52
- .setIsUseIntervals(isUseIntervals)
53
- .setIsUseDynamicParameter(isUseDynamicParameter)
54
- .build()
55
-
56
- TagWorks.initializeSdk(reactApplicationContext, config)
57
-
58
- }
59
-
60
-
61
- /**
62
- * siteId, baseUrl SDK 초기화 함수
63
- */
64
- @ReactMethod
65
- fun initTagWorksWithSiteIdAndBaseUrl(siteId: String,baseUrl: String) {
66
- TagWorks.initializeSdk(reactApplicationContext,siteId,baseUrl)
67
- }
68
-
69
-
70
- @ReactMethod
71
- fun setLogLevel(level:Int) {
72
- TagWorks.getInstance().setLogLevel(level)
73
- }
74
-
75
- @ReactMethod
76
- fun setOptOut(isOptOut:Boolean) {
77
- TagWorks.getInstance().optOut = isOptOut
78
- }
79
-
80
- @ReactMethod
81
- fun setUserId(userId:String) {
82
- TagWorks.getInstance().userId = userId
83
- }
84
-
85
- @ReactMethod
86
- fun setVisitorId(visitorId:String) {
87
- TagWorks.getInstance().visitorId =visitorId
88
- }
89
-
90
- @ReactMethod
91
- fun setAdId(adId:String) {
92
- TagWorks.getInstance().adId = adId
93
- }
94
-
95
- @ReactMethod
96
- fun getAdId(callback: Callback) {
97
- try {
98
- callback.invoke(TagWorks.getInstance().adId)
99
- }catch (e:Exception) {
100
- callback.invoke("error :",e.message)
101
- }
102
- }
103
-
104
- @ReactMethod
105
- fun getVisitorId(callback: Callback) {
106
- try {
107
- callback.invoke(TagWorks.getInstance().visitorId)
108
- }catch (e:Exception) {
109
- callback.invoke("error :",e.message)
110
- }
111
- }
112
-
113
- @ReactMethod
114
- fun getSiteId(callback: Callback) {
115
- try {
116
- callback.invoke(TagWorks.getInstance().siteId)
117
- } catch (e:Exception) {
118
- callback.invoke("error :",e.message)
119
- }
120
- }
121
-
122
-
123
- /**
124
- * 공용 dimension 설정
125
- */
126
-
127
-
128
- @ReactMethod
129
- fun setCommonDimensionWithDouble(index: Int,numValue:Double) {
130
- TagWorks.getInstance().setCommonDimension(index,numValue)
131
- }
132
-
133
- @ReactMethod
134
- fun setCommonDimensionWithString(index: Int,value:String) {
135
- TagWorks.getInstance().setCommonDimension(index,value)
136
- }
137
-
138
- @ReactMethod
139
- fun setDynamicCommonDimensionWithDouble(key:String, numValue: Double) {
140
- TagWorks.getInstance().setDynamicCommonDimension(key,numValue)
141
- }
142
-
143
- @ReactMethod
144
- fun setDynamicCommonDimensionWithString(key: String, value:String) {
145
- TagWorks.getInstance().setDynamicCommonDimension(key,value)
146
- }
147
-
148
-
149
- @ReactMethod
150
- fun getCommonDimensions(callback: Callback) {
151
-
152
- try {
153
- val cDimensions = TagWorks.getInstance().getCommonDimensions()
154
- val cDynamicDimensions = TagWorks.getInstance().getDynamicCommonDimensions()
25
+ /**
26
+ * js에서 호출하는 TagWorksModule 네이밍
27
+ */
28
+ override fun getName(): String {
29
+ return "TagWorksModule"
30
+ }
155
31
 
156
- val generalDimensions = JSONObject()
157
- val factDimensions = JSONObject()
32
+ /**
33
+ * config SDK 초기화 함수
34
+ */
35
+ @ReactMethod
36
+ fun initializeTagWorks(
37
+ siteId:String,
38
+ baseUrl:String,
39
+ isUseIntervals:Boolean,
40
+ dispatchInterval:Double,
41
+ sessionTimeout:Double,
42
+ isManualDispatch:Boolean,
43
+ appVersion:String?,
44
+ appName:String?,
45
+ isUseDynamicParameter:Boolean,
46
+ deeplinkServerUrl: String
47
+ ) {
48
+ val config = TagWorksConfig.Builder()
49
+ .setSiteId(siteId)
50
+ .setBaseUrl(baseUrl)
51
+ .setDispatchInterval(dispatchInterval.toLong())
52
+ .setSessionTimeOut(sessionTimeout.toLong()*1000)
53
+ .setAppVersion(appVersion)
54
+ .setAppName(appName)
55
+ .setManualDispatch(isManualDispatch)
56
+ .setIsUseIntervals(isUseIntervals)
57
+ .setIsUseDynamicParameter(isUseDynamicParameter)
58
+ .setDeeplinkServerUrl(deeplinkServerUrl)
59
+ .build()
60
+
61
+ TagWorks.initializeSdk(reactApplicationContext, config)
158
62
 
159
- cDimensions.forEach { dimension ->
160
- when (dimension.type) {
161
- DimensionType.GENERAL_TYPE -> generalDimensions.put(dimension.index.toString(),dimension.value)
162
- DimensionType.FACT_TYPE -> factDimensions.put(dimension.index.toString(),dimension.numValue)
163
- }
164
- }
63
+ }
165
64
 
166
- cDynamicDimensions.forEach { dimension ->
167
- when (dimension.type) {
168
- DimensionType.GENERAL_TYPE -> generalDimensions.put(dimension.key,dimension.value)
169
- DimensionType.FACT_TYPE -> factDimensions.put(dimension.key,dimension.numValue)
170
- }
171
- }
172
65
 
173
- val generalWrapper = JSONObject().apply {
174
- put("General", generalDimensions)
175
- }
66
+ /**
67
+ * siteId, baseUrl SDK 초기화 함수
68
+ */
69
+ @ReactMethod
70
+ fun initTagWorksWithSiteIdAndBaseUrl(siteId: String,baseUrl: String) {
71
+ TagWorks.initializeSdk(reactApplicationContext,siteId,baseUrl)
72
+ }
176
73
 
177
- val factWrapper = JSONObject().apply {
178
- put("Fact", factDimensions)
179
- }
180
74
 
181
- val dimensionsArray = JSONArray().apply {
182
- put(generalWrapper)
183
- put(factWrapper)
184
- }
75
+ @ReactMethod
76
+ fun setLogLevel(level:Int) {
77
+ TagWorks.getInstance().setLogLevel(level)
78
+ }
185
79
 
186
- val result = JSONObject().apply {
187
- put("Dimensions", dimensionsArray)
188
- }
80
+ @ReactMethod
81
+ fun setOptOut(isOptOut:Boolean) {
82
+ TagWorks.getInstance().optOut = isOptOut
83
+ }
189
84
 
190
- val jsonString = result.toString(4)
85
+ @ReactMethod
86
+ fun setUserId(userId:String) {
87
+ TagWorks.getInstance().userId = userId
88
+ }
191
89
 
192
- callback.invoke(jsonString)
193
- } catch (e: Exception) {
194
- // 오류 처리
195
- e.printStackTrace()
196
- callback.invoke(null)
90
+ @ReactMethod
91
+ fun setVisitorId(visitorId:String) {
92
+ TagWorks.getInstance().visitorId =visitorId
197
93
  }
198
94
 
95
+ @ReactMethod
96
+ fun setAutoTrackingPage(autoTrackingPage: Boolean) {
97
+ TagWorks.getInstance().autoTrackingPage = autoTrackingPage
98
+ }
199
99
 
200
- }
100
+ @ReactMethod
101
+ fun setAdId(adId:String) {
102
+ TagWorks.getInstance().adId = adId
103
+ }
201
104
 
202
- @ReactMethod
203
- fun getDynamicCommonDimensions(callback: Callback) {
204
- try {
205
- val cDimensions = TagWorks.getInstance().getCommonDimensions()
206
- val cDynamicDimensions = TagWorks.getInstance().getDynamicCommonDimensions()
105
+ @ReactMethod
106
+ fun getAdId(callback: Callback) {
107
+ try {
108
+ callback.invoke(TagWorks.getInstance().adId)
109
+ }catch (e:Exception) {
110
+ callback.invoke("error :",e.message)
111
+ }
112
+ }
207
113
 
208
- val generalDimensions = JSONObject()
209
- val factDimensions = JSONObject()
114
+ @ReactMethod
115
+ fun getVisitorId(callback: Callback) {
116
+ try {
117
+ callback.invoke(TagWorks.getInstance().visitorId)
118
+ }catch (e:Exception) {
119
+ callback.invoke("error :",e.message)
120
+ }
121
+ }
210
122
 
211
- cDimensions.forEach { dimension ->
212
- when (dimension.type) {
213
- DimensionType.GENERAL_TYPE -> generalDimensions.put(dimension.index.toString(),dimension.value)
214
- DimensionType.FACT_TYPE -> factDimensions.put(dimension.index.toString(),dimension.numValue)
123
+ @ReactMethod
124
+ fun getSiteId(callback: Callback) {
125
+ try {
126
+ callback.invoke(TagWorks.getInstance().siteId)
127
+ } catch (e:Exception) {
128
+ callback.invoke("error :",e.message)
215
129
  }
216
- }
130
+ }
217
131
 
218
- cDynamicDimensions.forEach { dimension ->
219
- when (dimension.type) {
220
- DimensionType.GENERAL_TYPE -> generalDimensions.put(dimension.key,dimension.value)
221
- DimensionType.FACT_TYPE -> factDimensions.put(dimension.key,dimension.numValue)
132
+ @ReactMethod
133
+ fun getDeeplinkServerUrl(callback: Callback) {
134
+ try {
135
+ callback.invoke(TagWorks.getInstance().deeplinkServerUrl)
136
+ } catch (e:Exception) {
137
+ callback.invoke("error :",e.message)
222
138
  }
223
- }
224
-
225
- val generalWrapper = JSONObject().apply {
226
- put("General", generalDimensions)
227
- }
228
-
229
- val factWrapper = JSONObject().apply {
230
- put("Fact", factDimensions)
231
- }
232
-
233
- val dimensionsArray = JSONArray().apply {
234
- put(generalWrapper)
235
- put(factWrapper)
236
- }
237
-
238
- val result = JSONObject().apply {
239
- put("Dimensions", dimensionsArray)
240
- }
241
-
242
- val jsonString = result.toString(4)
243
-
244
- callback.invoke(jsonString)
245
- } catch (e: Exception) {
246
- // 오류 처리
247
- e.printStackTrace()
248
- callback.invoke(null)
249
- }
250
- }
251
-
252
- @ReactMethod
253
- fun getCommonDimensionsOfArrayIndex(callback: Callback) {
254
- try {
255
- val cDimensions = TagWorks.getInstance().getCommonDimensions()
256
- val dimensions = JSONArray()
257
-
258
- cDimensions.forEach { dimension ->
259
- val dimensionObject = JSONObject()
260
- if (dimension.type == DimensionType.FACT_TYPE) {
261
- dimensionObject.put("Fact_${dimension.index}", dimension.numValue)
262
- } else if (dimension.type == DimensionType.GENERAL_TYPE) {
263
- dimensionObject.put("General_${dimension.index}", dimension.value)
139
+ }
140
+
141
+ @ReactMethod
142
+ fun enableTestTool(isTestMode: Boolean) {
143
+ val currentActivity = reactApplicationContext.currentActivity ?: return
144
+ if (isTestMode) TagWorks.getInstance().enableTestTool(currentActivity)
145
+ }
146
+
147
+ @ReactMethod
148
+ fun excludeAutoTrackingPages(pageNames: ReadableArray?) {
149
+ if (pageNames == null) return
150
+
151
+ val classList = mutableListOf<Class<*>>()
152
+
153
+ for (i in 0 until pageNames.size()) {
154
+ val name = pageNames.getString(i)
155
+
156
+ try {
157
+ val clazz = Class.forName(name)
158
+ classList.add(clazz)
159
+ } catch (e: ClassNotFoundException) {
160
+ e.printStackTrace()
161
+ }
264
162
  }
265
- dimensions.put(dimensionObject)
266
- }
267
- val jsonString = dimensions.toString(4)
268
- callback.invoke(jsonString)
269
- }catch (e:Exception) {
270
- callback.invoke(null)
271
- }
272
- }
273
-
274
- @ReactMethod
275
- fun getCommonDimensionWithString(index: Int,callback: Callback) {
276
- val mCommonDimension = TagWorks.getInstance().getCommonDimension(DimensionType.GENERAL_TYPE,index)
277
- if (mCommonDimension != null) callback.invoke(mCommonDimension.value)
278
- else callback.invoke(null)
279
- }
280
-
281
- @ReactMethod
282
- fun getCommonDimensionWithDouble(index: Int,callback: Callback) {
283
- val mCommonDimension = TagWorks.getInstance().getCommonDimension(DimensionType.FACT_TYPE,index)
284
- if (mCommonDimension != null) callback.invoke(mCommonDimension.numValue)
285
- else callback.invoke(null)
286
- }
287
-
288
- @ReactMethod
289
- fun getDynamicCommonDimension(key: String, callback: Callback) {
290
- val mCommonDimension = TagWorks.getInstance().getDynamicCommonDimension(key)
291
- if(mCommonDimension != null) callback.invoke(if(mCommonDimension.type==DimensionType.GENERAL_TYPE) mCommonDimension.value else mCommonDimension.numValue)
292
- else callback.invoke(null)
293
- }
294
-
295
- @ReactMethod
296
- fun getDynamicCommonDimensionsOfArrayIndex(callback: Callback) {
297
- try {
298
- val cDynamicDimensions = TagWorks.getInstance().getDynamicCommonDimensions()
299
- val dimensions = JSONArray()
300
-
301
- cDynamicDimensions.forEach { dimension ->
302
- val dimensionObject = JSONObject()
303
- if (dimension.type == DimensionType.GENERAL_TYPE) {
304
- dimensionObject.put(dimension.key,dimension.value)
305
- }else{
306
- dimensionObject.put(dimension.key,dimension.numValue)
163
+
164
+ if (classList.isNotEmpty()) {
165
+ TagWorks.getInstance().excludeAutoTrackingPages(classList)
307
166
  }
308
- dimensions.put(dimensionObject)
309
- }
310
- val jsonString = dimensions.toString(4)
311
- callback.invoke(jsonString)
312
- }catch (e:Exception) {
313
- callback.invoke(null)
314
167
  }
315
- }
316
168
 
317
169
 
318
- @ReactMethod
319
- fun removeCommonDimensionInGeneralType(index: Int) {
320
- TagWorks.getInstance().removeCommonDimension(DimensionType.GENERAL_TYPE,index)
321
- }
170
+ /**
171
+ * 공용 dimension 설정
172
+ */
322
173
 
323
- @ReactMethod
324
- fun removeCommonDimensionInFactType(index: Int) {
325
- TagWorks.getInstance().removeCommonDimension(DimensionType.FACT_TYPE,index)
326
- }
327
174
 
328
- @ReactMethod
329
- fun removeDynamicCommonDimension(key: String) {
330
- TagWorks.getInstance().removeDynamicCommonDimension(key)
331
- }
175
+ @ReactMethod
176
+ fun setCommonDimensionWithDouble(index: Int,numValue:Double) {
177
+ TagWorks.getInstance().setCommonDimension(index,numValue)
178
+ }
332
179
 
333
- @ReactMethod
334
- fun removeCommonDimensionWithArrayIndex(index:Int) {
335
- TagWorks.getInstance().removeCommonDimensionWithArrayIndex(index)
336
- }
180
+ @ReactMethod
181
+ fun setCommonDimensionWithString(index: Int,value:String) {
182
+ TagWorks.getInstance().setCommonDimension(index,value)
183
+ }
337
184
 
338
- @ReactMethod
339
- fun removeDynamicCommonDimensionWithArrayIndex(index: Int) {
340
- TagWorks.getInstance().removeDynamicCommonDimensionWithArrayIndex(index)
341
- }
185
+ @ReactMethod
186
+ fun setDynamicCommonDimensionWithDouble(key:String, numValue: Double) {
187
+ TagWorks.getInstance().setDynamicCommonDimension(key,numValue)
188
+ }
342
189
 
343
- @ReactMethod
344
- fun removeAllCommonDimension() {
345
- TagWorks.getInstance().removeAllCommonDimension()
346
- }
190
+ @ReactMethod
191
+ fun setDynamicCommonDimensionWithString(key: String, value:String) {
192
+ TagWorks.getInstance().setDynamicCommonDimension(key,value)
193
+ }
194
+
195
+
196
+ @ReactMethod
197
+ fun getCommonDimensions(callback: Callback) {
347
198
 
348
- @ReactMethod
349
- fun removeAllDynamicCommonDimension() {
350
- TagWorks.getInstance().removeAllCommonDimension()
351
- }
199
+ try {
200
+ val cDimensions = TagWorks.getInstance().getCommonDimensions()
201
+ val cDynamicDimensions = TagWorks.getInstance().getDynamicCommonDimensions()
352
202
 
353
- @ReactMethod
354
- fun dispatch(callback: Callback) {
355
- val result = TagWorks.getInstance().dispatch()
356
- callback.invoke(result)
357
- }
203
+ val generalDimensions = JSONObject()
204
+ val factDimensions = JSONObject()
358
205
 
359
- @ReactMethod
360
- fun sendReferrerEventWithOpenUrlString(openUrl: String) {
361
- TagWorks.getInstance().sendReferrerEvent(openUrl)
362
- }
206
+ cDimensions.forEach { dimension ->
207
+ when (dimension.type) {
208
+ DimensionType.GENERAL_TYPE -> generalDimensions.put(dimension.index.toString(),dimension.value)
209
+ DimensionType.FACT_TYPE -> factDimensions.put(dimension.index.toString(),dimension.numValue)
210
+ }
211
+ }
363
212
 
213
+ cDynamicDimensions.forEach { dimension ->
214
+ when (dimension.type) {
215
+ DimensionType.GENERAL_TYPE -> generalDimensions.put(dimension.key,dimension.value)
216
+ DimensionType.FACT_TYPE -> factDimensions.put(dimension.key,dimension.numValue)
217
+ }
218
+ }
364
219
 
365
- @ReactMethod
366
- fun logEvent(eventType:String,data:ReadableMap,callback: Callback) {
220
+ val result = JSONObject().apply {
221
+ put("General", generalDimensions)
222
+ put("Fact", factDimensions)
223
+ }
224
+
225
+ val jsonString = result.toString(4)
226
+
227
+ callback.invoke(jsonString)
228
+ } catch (e: Exception) {
229
+ // 오류 처리
230
+ e.printStackTrace()
231
+ callback.invoke(null)
232
+ }
367
233
 
368
- val bundle = DataBundle()
369
234
 
370
- val dataBundleMap = data.getMap("dataBundle")
371
- dataBundleMap?.let {
372
- val keySetIterator = it.keySetIterator()
373
- while (keySetIterator.hasNextKey()) {
374
- val key = keySetIterator.nextKey()
375
- bundle.putString(key,it.getString(key))
376
- }
377
235
  }
378
236
 
379
- val dimensionsArray = data.getArray("dimensions")
380
- dimensionsArray?.let {
381
- for (i in 0 until it.size()) {
382
- val dimensionMap = it.getMap(i)
237
+ @ReactMethod
238
+ fun getDynamicCommonDimensions(callback: Callback) {
239
+ try {
240
+ val cDimensions = TagWorks.getInstance().getCommonDimensions()
241
+ val cDynamicDimensions = TagWorks.getInstance().getDynamicCommonDimensions()
242
+
243
+ val generalDimensions = JSONObject()
244
+ val factDimensions = JSONObject()
245
+
246
+ cDimensions.forEach { dimension ->
247
+ when (dimension.type) {
248
+ DimensionType.GENERAL_TYPE -> generalDimensions.put(dimension.index.toString(),dimension.value)
249
+ DimensionType.FACT_TYPE -> factDimensions.put(dimension.index.toString(),dimension.numValue)
250
+ }
251
+ }
252
+
253
+ cDynamicDimensions.forEach { dimension ->
254
+ when (dimension.type) {
255
+ DimensionType.GENERAL_TYPE -> generalDimensions.put(dimension.key,dimension.value)
256
+ DimensionType.FACT_TYPE -> factDimensions.put(dimension.key,dimension.numValue)
257
+ }
258
+ }
259
+
260
+ val result = JSONObject().apply {
261
+ put("General", generalDimensions)
262
+ put("Fact", factDimensions)
263
+ }
264
+
265
+ val jsonString = result.toString(4)
266
+ callback.invoke(jsonString)
267
+ } catch (e: Exception) {
268
+ // 오류 처리
269
+ e.printStackTrace()
270
+ callback.invoke(null)
271
+ }
272
+ }
383
273
 
384
- val type = dimensionMap.getString("type")
385
- val index = if (dimensionMap.hasKey("index")) dimensionMap.getInt("index") else -1
386
- val key = if(dimensionMap.hasKey("key")) dimensionMap.getString("key") else index.toString()
387
- val value = if(dimensionMap.hasKey("value")) dimensionMap.getString("value") else ""
388
- val numValue = if(dimensionMap.hasKey("numValue")) dimensionMap.getDouble("numValue") else 0.0
274
+ @ReactMethod
275
+ fun getCommonDimensionsOfArrayIndex(callback: Callback) {
276
+ try {
277
+ val cDimensions = TagWorks.getInstance().getCommonDimensions()
278
+ val dimensions = JSONArray()
279
+
280
+ cDimensions.forEach { dimension ->
281
+ val dimensionObject = JSONObject()
282
+ if (dimension.type == DimensionType.FACT_TYPE) {
283
+ dimensionObject.put("Fact_${dimension.index}", dimension.numValue)
284
+ } else if (dimension.type == DimensionType.GENERAL_TYPE) {
285
+ dimensionObject.put("General_${dimension.index}", dimension.value)
286
+ }
287
+ dimensions.put(dimensionObject)
288
+ }
289
+ val jsonString = dimensions.toString(4)
290
+ callback.invoke(jsonString)
291
+ }catch (e:Exception) {
292
+ callback.invoke(null)
293
+ }
294
+ }
389
295
 
390
- bundle.setDimension(Dimension(DimensionType.valueOf(type!!),index,key!!,value!!,numValue))
391
- }
296
+ @ReactMethod
297
+ fun getCommonDimensionWithString(index: Int,callback: Callback) {
298
+ val mCommonDimension = TagWorks.getInstance().getCommonDimension(DimensionType.GENERAL_TYPE,index)
299
+ if (mCommonDimension != null) callback.invoke(mCommonDimension.value)
300
+ else callback.invoke(null)
392
301
  }
393
302
 
394
- Log.d(TAG, "logEvent: ${bundle.dataBundle} + ${bundle.dimensions}")
395
- try {
303
+ @ReactMethod
304
+ fun getCommonDimensionWithDouble(index: Int,callback: Callback) {
305
+ val mCommonDimension = TagWorks.getInstance().getCommonDimension(DimensionType.FACT_TYPE,index)
306
+ if (mCommonDimension != null) callback.invoke(mCommonDimension.numValue)
307
+ else callback.invoke(null)
308
+ }
396
309
 
397
- val result = TagWorks.getInstance().logEvent(eventType, bundle)
398
- callback.invoke(result)
310
+ @ReactMethod
311
+ fun getDynamicCommonDimension(key: String, callback: Callback) {
312
+ val mCommonDimension = TagWorks.getInstance().getDynamicCommonDimension(key)
313
+ if(mCommonDimension != null) callback.invoke(if(mCommonDimension.type== DimensionType.GENERAL_TYPE) mCommonDimension.value else mCommonDimension.numValue)
314
+ else callback.invoke(null)
315
+ }
399
316
 
400
- }catch (e:Exception) {
401
- Log.d(TAG, "log event error: ${e.message}")
317
+ @ReactMethod
318
+ fun getDynamicCommonDimensionsOfArrayIndex(callback: Callback) {
319
+ try {
320
+ val cDynamicDimensions = TagWorks.getInstance().getDynamicCommonDimensions()
321
+ val dimensions = JSONArray()
322
+
323
+ cDynamicDimensions.forEach { dimension ->
324
+ val dimensionObject = JSONObject()
325
+ if (dimension.type == DimensionType.GENERAL_TYPE) {
326
+ dimensionObject.put(dimension.key,dimension.value)
327
+ }else{
328
+ dimensionObject.put(dimension.key,dimension.numValue)
329
+ }
330
+ dimensions.put(dimensionObject)
331
+ }
332
+ val jsonString = dimensions.toString(4)
333
+ callback.invoke(jsonString)
334
+ }catch (e:Exception) {
335
+ callback.invoke(null)
336
+ }
402
337
  }
403
338
 
404
339
 
405
- }
340
+ @ReactMethod
341
+ fun removeCommonDimensionInGeneralType(index: Int) {
342
+ TagWorks.getInstance().removeCommonDimension(DimensionType.GENERAL_TYPE,index)
343
+ }
406
344
 
407
- @ReactMethod
408
- fun webInterfaceDidReceive(jsonEventString: String) {
409
- d(MessageHandlerName,jsonEventString)
410
- try {
411
- val jsonObj = JSONObject(jsonEventString)
345
+ @ReactMethod
346
+ fun removeCommonDimensionInFactType(index: Int) {
347
+ TagWorks.getInstance().removeCommonDimension(DimensionType.FACT_TYPE,index)
348
+ }
412
349
 
413
- val sender = if (jsonObj.isNull("e_a")) null else jsonObj.getString("e_a")
414
- if ( sender == "obzen") {
350
+ @ReactMethod
351
+ fun removeDynamicCommonDimension(key: String) {
352
+ TagWorks.getInstance().removeDynamicCommonDimension(key)
353
+ }
354
+
355
+ @ReactMethod
356
+ fun removeCommonDimensionWithArrayIndex(index:Int) {
357
+ TagWorks.getInstance().removeCommonDimensionWithArrayIndex(index)
358
+ }
415
359
 
416
- val idSite = if (jsonObj.isNull("idsite")) null else jsonObj.getString("idsite")
417
- val url = if (jsonObj.isNull("url")) null else jsonObj.getString("url")
418
- val urlref = if (jsonObj.isNull("urlref")) null else jsonObj.getString("urlref")
419
- var eventCategory = if (jsonObj.isNull("e_c")) null else jsonObj.getString("e_c")
360
+ @ReactMethod
361
+ fun removeDynamicCommonDimensionWithArrayIndex(index: Int) {
362
+ TagWorks.getInstance().removeDynamicCommonDimensionWithArrayIndex(index)
363
+ }
364
+
365
+ @ReactMethod
366
+ fun removeAllCommonDimension() {
367
+ TagWorks.getInstance().removeAllCommonDimension()
368
+ }
420
369
 
421
- if (eventCategory != null) {
422
- eventCategory =
423
- eventCategory.replace("{{vstor_id}}", TagWorks.getInstance().visitorId)
370
+ @ReactMethod
371
+ fun removeAllDynamicCommonDimension() {
372
+ TagWorks.getInstance().removeAllCommonDimension()
373
+ }
374
+
375
+ @ReactMethod
376
+ fun dispatch(callback: Callback) {
377
+ val result = TagWorks.getInstance().dispatch()
378
+ callback.invoke(result)
379
+ }
380
+
381
+ @ReactMethod
382
+ fun sendReferrerEventWithOpenUrlString(openUrl: String) {
383
+ TagWorks.getInstance().sendReferrerEvent(openUrl)
384
+ }
385
+
386
+
387
+ @ReactMethod
388
+ fun logEvent(eventType:String,data:ReadableMap,callback: Callback) {
389
+
390
+ val bundle = DataBundle()
391
+
392
+ val dataBundleMap = data.getMap("dataBundle")
393
+ dataBundleMap?.let {
394
+ val keySetIterator = it.keySetIterator()
395
+ while (keySetIterator.hasNextKey()) {
396
+ val key = keySetIterator.nextKey()
397
+ bundle.putString(key,it.getString(key))
398
+ }
424
399
  }
425
400
 
426
- if (idSite != null && idSite != TagWorks.getInstance().siteId) {
427
- Logger.i(MessageHandlerName, "WebView siteid is not equal App siteid!!")
401
+ val dimensionsArray = data.getArray("dimensions")
402
+ dimensionsArray?.let {
403
+ for (i in 0 until it.size()) {
404
+ val dimensionMap = it.getMap(i)
405
+
406
+ val type = dimensionMap?.getString("type")
407
+ val index = if (dimensionMap?.hasKey("index") == true) dimensionMap?.getInt("index") else -1
408
+ val key = if(dimensionMap?.hasKey("key") == true) dimensionMap?.getString("key") else index.toString()
409
+ val value = if(dimensionMap?.hasKey("value") == true) dimensionMap?.getString("value") else ""
410
+ val numValue = if(dimensionMap?.hasKey("numValue") == true) dimensionMap?.getDouble("numValue") else 0.0
411
+
412
+ bundle.setDimension(Dimension(DimensionType.valueOf(type!!),index!!,key!!,value!!,numValue!!))
413
+ }
428
414
  }
429
415
 
430
- TagWorks.getInstance().webInterfaceLogEventPush(
431
- idSite, url, urlref, eventCategory
432
- )
433
- }
416
+ Log.d(TAG, "logEvent: ${bundle.dataBundle} + ${bundle.dimensions}")
417
+ try {
418
+
419
+ val result = TagWorks.getInstance().logEvent(eventType, bundle)
420
+ callback.invoke(result)
421
+
422
+ }catch (e:Exception) {
423
+ Log.d(TAG, "log event error: ${e.message}")
424
+ }
434
425
 
435
- } catch (t: Throwable) {
436
- Logger.e(MessageHandlerName, "Could not parse malformed JSON: \"$jsonEventString\"");
426
+
427
+ }
428
+
429
+ @ReactMethod
430
+ fun isInitialize(callback: Callback) {
431
+ try {
432
+ callback.invoke(TagWorks.getInstance().isInitialize.toString())
433
+ } catch (e:Exception) {
434
+ callback.invoke("error :",e.message)
435
+ }
436
+ }
437
+
438
+ @ReactMethod
439
+ fun saveErrorReport(errorType: String, errorMessage: String) {
440
+ TagWorks.getInstance().saveErrorReport(errorType, errorMessage)
437
441
  }
438
- }
439
442
 
440
- override fun getConstants(): MutableMap<String, Any> {
441
- return mutableMapOf(
442
- "EVENT_TYPE_PAGE" to TagWorks.EVENT_TYPE_PAGE,
443
- "EVENT_TYPE_USER_EVENT" to TagWorks.EVENT_TYPE_USER_EVENT,
444
- )
445
- }
443
+ @ReactMethod
444
+ fun webInterfaceDidReceive(jsonEventString: String) {
445
+ Logger.d(TagWorks.getInstance().tag,jsonEventString)
446
+ try {
447
+
448
+ val jsonObj = JSONObject(jsonEventString)
449
+ val sender = if (jsonObj.isNull("e_a")) null else jsonObj.getString("e_a")
450
+
451
+ if ( sender == "obzen") {
452
+
453
+ WebAppInterface().TagWorksWebEvent(jsonEventString)
454
+
455
+ } else if ( sender == "obzenoncms") {
456
+
457
+ val currentActivity = reactApplicationContext.currentActivity ?: return
446
458
 
447
- companion object {
448
- const val TAG = "TagWorksModule"
449
- }
459
+ if (currentActivity == null) {
460
+ Logger.d(TagWorks.getInstance().tag, "currentActivity is null; cannot show popup yet")
461
+ return
462
+ }
463
+ val hasCommand = jsonObj.has("command")
464
+
465
+ UiThreadUtil.runOnUiThread {
466
+ val onCms = WebAppOnCmsInterface(currentActivity)
467
+ if (hasCommand) {
468
+ onCms.commandPopup(jsonEventString)
469
+ } else {
470
+ onCms.showPopup(jsonEventString)
471
+ }
472
+ }
473
+
474
+ }
475
+
476
+ } catch (t: Throwable) {
477
+ Logger.e(MessageHandlerName, "Could not parse malformed JSON: \"$jsonEventString\"");
478
+ }
479
+ }
480
+
481
+ override fun getConstants(): MutableMap<String, Any> {
482
+ return mutableMapOf(
483
+ "EVENT_TYPE_PAGE" to TagWorks.EVENT_TYPE_PAGE,
484
+ "EVENT_TYPE_USER_EVENT" to TagWorks.EVENT_TYPE_USER_EVENT,
485
+ )
486
+ }
487
+
488
+ companion object {
489
+ const val TAG = "TagWorksModule"
490
+ }
450
491
  }