tagworks-sdk-v1-react 1.1.13 → 1.1.15

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.
@@ -25,7 +25,7 @@ class DataBundleModule: NSObject, RCTBridgeModule {
25
25
  }
26
26
 
27
27
  // @objc static func constantsToExport() -> [AnyHashable: Any]! {
28
- @objc static func constantsToExport() -> [AnyHashable: Any]! {
28
+ @objc func constantsToExport() -> [AnyHashable: Any]! {
29
29
  // 상수값을 반환합니다. JavaScript로 전달됩니다.
30
30
  return [
31
31
  "EVENT_TAG_NAME": "OBZEN_EVENT_NAME",
@@ -101,11 +101,26 @@ class DataBundleModule: NSObject, RCTBridgeModule {
101
101
 
102
102
  var generalDimensions: [String: String] = [:]
103
103
  var factDimensions: [String: Any] = [:]
104
+ // for dimension in self.eventDimensions {
105
+ // if dimension.type == Dimension.generalType {
106
+ // generalDimensions[String(dimension.index)] = dimension.value
107
+ // } else if dimension.type == Dimension.factType {
108
+ // factDimensions[String(dimension.index)] = String(dimension.numValue)
109
+ // }
110
+ // }
104
111
  for dimension in self.eventDimensions {
105
112
  if dimension.type == Dimension.generalType {
106
- generalDimensions[String(dimension.index)] = dimension.value
113
+ if dimension.index == -1 {
114
+ generalDimensions[dimension.key] = dimension.value
115
+ } else {
116
+ generalDimensions[String(dimension.index)] = dimension.value
117
+ }
107
118
  } else if dimension.type == Dimension.factType {
108
- factDimensions[String(dimension.index)] = String(dimension.numValue)
119
+ if dimension.index == -1 {
120
+ factDimensions[dimension.key] = String(dimension.numValue)
121
+ } else {
122
+ factDimensions[String(dimension.index)] = String(dimension.numValue)
123
+ }
109
124
  }
110
125
  }
111
126
  let gDimension = ["General": generalDimensions]
@@ -147,6 +162,17 @@ class DataBundleModule: NSObject, RCTBridgeModule {
147
162
  removeDimensionInFactType(index)
148
163
  eventDimensions.append(Dimension(index: index, numValue: value))
149
164
  }
165
+
166
+ // -- 동적 파라미터
167
+ @objc func putDynamicDimensionWithString(_ key: String, value: String) {
168
+ removeDynamicDimension(key)
169
+ eventDimensions.append(Dimension(key: key, value: value))
170
+ }
171
+
172
+ @objc func putDynamicDimensionWithDouble(_ key: String, value: Double) {
173
+ removeDynamicDimension(key)
174
+ eventDimensions.append(Dimension(key: key, numValue: value))
175
+ }
150
176
 
151
177
  /// General 과 Fact 별로 저장되어 있는 인덱스와 값들을 리턴i
152
178
  @objc func getDimensions(_ callback: @escaping RCTResponseSenderBlock) {
@@ -154,13 +180,21 @@ class DataBundleModule: NSObject, RCTBridgeModule {
154
180
  var generalDimensions: [String: String] = [:]
155
181
  var factDimensions: [String: Any] = [:]
156
182
 
157
- for dimension in self.eventDimensions {
158
- if dimension.type == Dimension.generalType {
159
- generalDimensions[String(dimension.index)] = dimension.value
160
- } else if dimension.type == Dimension.factType {
161
- factDimensions[String(dimension.index)] = String(dimension.numValue)
162
- }
163
- }
183
+ for dimension in self.eventDimensions {
184
+ if dimension.type == Dimension.generalType {
185
+ if dimension.index == -1 {
186
+ generalDimensions[dimension.key] = dimension.value
187
+ } else {
188
+ generalDimensions[String(dimension.index)] = dimension.value
189
+ }
190
+ } else if dimension.type == Dimension.factType {
191
+ if dimension.index == -1 {
192
+ factDimensions[dimension.key] = String(dimension.numValue)
193
+ } else {
194
+ factDimensions[String(dimension.index)] = String(dimension.numValue)
195
+ }
196
+ }
197
+ }
164
198
  let gDimension = ["General": generalDimensions]
165
199
  let fDimension = ["Fact": factDimensions]
166
200
  dictDimensions["Dimensions"] = [gDimension, fDimension]
@@ -186,11 +220,19 @@ class DataBundleModule: NSObject, RCTBridgeModule {
186
220
  for dimension in self.eventDimensions {
187
221
  if dimension.type == Dimension.generalType {
188
222
  var dim: [String: String] = [:]
189
- dim["General_\(dimension.index)"] = dimension.value
223
+ if dimension.index == -1 {
224
+ dim["General_\(dimension.key)"] = dimension.value
225
+ } else {
226
+ dim["General_\(dimension.index)"] = dimension.value
227
+ }
190
228
  dimensionsArray.append(dim)
191
229
  } else if dimension.type == Dimension.factType {
192
230
  var dim: [String: String] = [:]
193
- dim["Fact_\(dimension.index)"] = String(dimension.numValue)
231
+ if dimension.index == -1 {
232
+ dim["Fact_\(dimension.key)"] = String(dimension.numValue)
233
+ } else {
234
+ dim["Fact_\(dimension.index)"] = String(dimension.numValue)
235
+ }
194
236
  dimensionsArray.append(dim)
195
237
  }
196
238
  }
@@ -226,7 +268,116 @@ class DataBundleModule: NSObject, RCTBridgeModule {
226
268
  callback([])
227
269
  }
228
270
  }
271
+
272
+ // -- 동적 파라미터
273
+ @objc func getDynamicDimensions(_ callback: @escaping RCTResponseSenderBlock) {
274
+ var dictDimensions: [String: Any] = [:]
275
+ var dynamicDimensions: [String: String] = [:]
276
+
277
+ for dimension in self.eventDimensions {
278
+ if dimension.type == Dimension.generalType {
279
+ if dimension.index == -1 {
280
+ dynamicDimensions[dimension.key] = dimension.value
281
+ } else {
282
+ dynamicDimensions[String(dimension.index)] = dimension.value
283
+ }
284
+ } else if dimension.type == Dimension.factType {
285
+ if dimension.index == -1 {
286
+ dynamicDimensions[dimension.key] = String(dimension.numValue)
287
+ } else {
288
+ dynamicDimensions[String(dimension.index)] = String(dimension.numValue)
289
+ }
290
+ }
291
+ }
292
+
293
+ dictDimensions["Dimensions"] = dynamicDimensions
294
+
295
+ do {
296
+ // Dictionary Array를 JSON으로 변환
297
+ let jsonData = try JSONSerialization.data(withJSONObject: dictDimensions, options: .prettyPrinted)
298
+
299
+ // JSON 데이터를 문자열로 변환하여 반환
300
+ if let jsonString = String(data: jsonData, encoding: .utf8) {
301
+ callback([jsonString]) // JSON 문자열을 JavaScript로 전달
302
+ }
303
+ } catch {
304
+ print("JSON 변환 오류: \(error)")
305
+ callback([NSNull()])
306
+ }
307
+ }
308
+
309
+ /// key 값에 맞춰서 리턴
310
+ @objc func getDynamicDimensionsOfArrayIndex(_ callback: @escaping RCTResponseSenderBlock) {
311
+ var dimensionsArray: [[String:String]] = []
312
+ // var dictDimensions: [String:String] = [:]
313
+ // let commonDimensions = TagWorks.sharedInstance.getCommonDimensions()
314
+
315
+ for dimension in self.eventDimensions {
316
+ if dimension.type == Dimension.generalType {
317
+ var dim: [String: String] = [:]
318
+ if dimension.index == -1 {
319
+ dim[dimension.key] = dimension.value
320
+ } else {
321
+ dim[String(dimension.index)] = dimension.value
322
+ }
323
+ dimensionsArray.append(dim)
324
+ } else if dimension.type == Dimension.factType {
325
+ var dim: [String: String] = [:]
326
+ if dimension.index == -1 {
327
+ dim[dimension.key] = String(dimension.numValue)
328
+ } else {
329
+ dim[String(dimension.index)] = String(dimension.numValue)
330
+ }
331
+ dimensionsArray.append(dim)
332
+ }
333
+ }
334
+
335
+ do {
336
+ // Dictionary Array를 JSON으로 변환
337
+ let jsonData = try JSONSerialization.data(withJSONObject: dimensionsArray, options: .prettyPrinted)
338
+
339
+ // JSON 데이터를 문자열로 변환하여 반환
340
+ if let jsonString = String(data: jsonData, encoding: .utf8) {
341
+ callback([jsonString]) // JSON 문자열을 JavaScript로 전달
342
+ }
343
+ } catch {
344
+ print("JSON 변환 오류: \(error)")
345
+ callback([NSNull()])
346
+ }
347
+ }
348
+
349
+ @objc func getDynamicDimension(_ key: String, callback: @escaping RCTResponseSenderBlock) {
350
+ let dimension = self.eventDimensions.filter {$0.key == key}.first
351
+ if let dimension {
352
+ if dimension.type == Dimension.generalType {
353
+ callback([dimension.value])
354
+ } else {
355
+ callback([dimension.numValue])
356
+ }
357
+ } else {
358
+ callback([])
359
+ }
360
+ }
361
+
362
+ // @objc func getDynamicDimensionWithString(_ key: String, callback: @escaping RCTResponseSenderBlock) {
363
+ // let dimension: TagWorks_SDK_iOS.Dimension? = self.eventDimensions.filter {$0.key == key && $0.type == Dimension.generalType}.first
364
+ // if let dimension {
365
+ // callback([dimension.value])
366
+ // } else {
367
+ // callback([])
368
+ // }
369
+ // }
370
+ //
371
+ // @objc func getDynamicDimensionWithDouble(_ key: String, callback: @escaping RCTResponseSenderBlock) {
372
+ // let dimension: TagWorks_SDK_iOS.Dimension? = self.eventDimensions.filter {$0.key == key && $0.type == Dimension.factType}.first
373
+ // if let dimension {
374
+ // callback([dimension.numValue])
375
+ // } else {
376
+ // callback([])
377
+ // }
378
+ // }
229
379
 
380
+ // Dimension 삭제
230
381
  @objc func removeDimensionInGeneralType(_ index: Int) {
231
382
  eventDimensions.removeAll(where: {$0.index == index && $0.type == Dimension.generalType})
232
383
  }
@@ -242,6 +393,19 @@ class DataBundleModule: NSObject, RCTBridgeModule {
242
393
  @objc func removeAllDimension() {
243
394
  eventDimensions.removeAll()
244
395
  }
396
+
397
+ // -- 동적 파라미터 삭제
398
+ @objc func removeDynamicDimension(_ key: String) {
399
+ eventDimensions.removeAll(where: {$0.key == key})
400
+ }
401
+
402
+ @objc func removeDynamicDimensionWithArrayIndex(_ index: Int) {
403
+ eventDimensions.remove(at: index)
404
+ }
405
+
406
+ @objc func removeAllDynamicDimension() {
407
+ eventDimensions.removeAll()
408
+ }
245
409
 
246
410
 
247
411
  /// 이벤트에 필요한 파라미터 항목들이 비어 있는지 체크
@@ -15,15 +15,30 @@ RCT_EXTERN_METHOD(initDataBundle:(NSString *) jsonString)
15
15
  RCT_EXTERN_METHOD(getDataBundle:(RCTResponseSenderBlock) callback)
16
16
 
17
17
  RCT_EXTERN_METHOD(putString:(NSString *)key value:(NSString *)value)
18
+
18
19
  RCT_EXTERN_METHOD(putDimensionWithString:(int)index value:(NSString *)value)
19
20
  RCT_EXTERN_METHOD(putDimensionWithDouble:(int)index value:(double)value)
21
+
20
22
  RCT_EXTERN_METHOD(getDimensions:(RCTResponseSenderBlock) callback)
21
23
  RCT_EXTERN_METHOD(getDimensionsOfArrayIndex:(RCTResponseSenderBlock) callback)
22
24
  RCT_EXTERN_METHOD(getDimensionWithString:(int)index callback:(RCTResponseSenderBlock) callback)
23
25
  RCT_EXTERN_METHOD(getDimensionWithDouble:(int)index callback:(RCTResponseSenderBlock) callback)
26
+
24
27
  RCT_EXTERN_METHOD(removeDimensionInGeneralType:(int)index)
25
28
  RCT_EXTERN_METHOD(removeDimensionInFactType:(int)index)
26
29
  RCT_EXTERN_METHOD(removeDimensionWithArrayIndex:(int)index)
27
30
  RCT_EXTERN_METHOD(removeAllDimension)
28
31
 
32
+ // -- 동적 파라미터
33
+ RCT_EXTERN_METHOD(putDynamicDimensionWithString:(NSString *)key value:(NSString *)value)
34
+ RCT_EXTERN_METHOD(putDynamicDimensionWithDouble:(NSString *)key value:(double)value)
35
+
36
+ RCT_EXTERN_METHOD(getDynamicDimensions:(RCTResponseSenderBlock) callback)
37
+ RCT_EXTERN_METHOD(getDynamicDimensionsOfArrayIndex:(RCTResponseSenderBlock) callback)
38
+ RCT_EXTERN_METHOD(getDynamicDimension:(NSString *)key callback:(RCTResponseSenderBlock) callback)
39
+
40
+ RCT_EXTERN_METHOD(removeDynamicDimension:(NSString *)key)
41
+ RCT_EXTERN_METHOD(removeDynamicDimensionWithArrayIndex:(int)index)
42
+ RCT_EXTERN_METHOD(removeAllDynamicDimension)
43
+
29
44
  @end
@@ -21,13 +21,13 @@ class StandardEventModule: NSObject, RCTBridgeModule {
21
21
  }
22
22
 
23
23
  // @objc static func constantsToExport() -> [AnyHashable: Any]! {
24
- @objc static func constantsToExport() -> [AnyHashable: Any]! {
24
+ @objc func constantsToExport() -> [AnyHashable: Any]! {
25
25
  // 상수값을 반환합니다. JavaScript로 전달됩니다.
26
26
  return [
27
27
  "PAGE_VIEW" : "PageView",
28
28
  "CLICK" : "Click",
29
29
  "SCROLL" : "Scroll",
30
- "DOWNLOAD" : "Search",
30
+ "DOWNLOAD" : "Download",
31
31
  "OUT_LINK" : "OutLink",
32
32
  "SEARCH" : "Search",
33
33
  "ERROR" : "Error",
@@ -36,24 +36,3 @@ class StandardEventModule: NSObject, RCTBridgeModule {
36
36
  }
37
37
  }
38
38
 
39
-
40
- //@objc(DimensionTypeModule)
41
- //class DimensionTypeModule: NSObject, RCTBridgeModule {
42
- //
43
- // static func moduleName() -> String {
44
- // return "DimensionTypeModule"
45
- // }
46
- //
47
- // // 네이티브 모듈에서 사용할 상수값을 반환하는 함수
48
- // @objc static func requiresMainQueueSetup() -> Bool {
49
- // return true
50
- // }
51
- //
52
- // @objc func getConstants() -> [AnyHashable: Any]! {
53
- // // 상수값을 반환합니다. JavaScript로 전달됩니다.
54
- // return [
55
- // "GENERAL" : "DIMENSION_TYPE_GENERAL",
56
- // "FACT" : "DIMENSION_TYPE_FACT",
57
- // ]
58
- // }
59
- //}
@@ -11,7 +11,3 @@
11
11
  @interface RCT_EXTERN_MODULE(StandardEventModule, NSObject)
12
12
 
13
13
  @end
14
-
15
- //@interface RCT_EXTERN_MODULE(DimensionTypeModule, NSObject)
16
- //
17
- //@end
@@ -23,7 +23,7 @@ class TagWorksModule: NSObject, RCTBridgeModule {
23
23
 
24
24
  // MARK: 이벤트 상수 선언
25
25
  // @objc static func constantsToExport() -> [AnyHashable: Any]! {
26
- @objc static func constantsToExport() -> [AnyHashable: Any]! {
26
+ @objc func constantsToExport() -> [AnyHashable: Any]! {
27
27
  // 상수값을 반환합니다. JavaScript로 전달됩니다.
28
28
  return [
29
29
  "EVENT_TYPE_PAGE": "EVENT_TYPE_PAGE",
@@ -40,7 +40,8 @@ class TagWorksModule: NSObject, RCTBridgeModule {
40
40
  isManualDispatch: Bool = false,
41
41
  // userAgent: String? = nil,
42
42
  appVersion: String? = nil,
43
- appName: String? = nil) {
43
+ appName: String? = nil,
44
+ isUseDynamicParameter: Bool = false) {
44
45
 
45
46
  TagWorks.sharedInstance.setInstanceConfig(siteId: siteId,
46
47
  baseUrl: URL(string: baseUrl)!,
@@ -51,7 +52,8 @@ class TagWorksModule: NSObject, RCTBridgeModule {
51
52
  userAgent: nil,
52
53
  isManualDispatch: isManualDispatch,
53
54
  appVersion: appVersion,
54
- appName: appName)
55
+ appName: appName,
56
+ isUseDynamicParameter: isUseDynamicParameter)
55
57
  }
56
58
 
57
59
  @objc func setIsDebugPrint(_ value: Bool) {
@@ -73,6 +75,10 @@ class TagWorksModule: NSObject, RCTBridgeModule {
73
75
  @objc func setUserId(_ value: String) {
74
76
  TagWorks.sharedInstance.userId = value
75
77
  }
78
+
79
+ @objc func setAdId(_ value: String) {
80
+ TagWorks.sharedInstance.adId = value
81
+ }
76
82
 
77
83
  @objc public func dispatch(_ callback: @escaping RCTResponseSenderBlock) {
78
84
  let result = TagWorks.sharedInstance.dispatch()
@@ -89,7 +95,19 @@ class TagWorksModule: NSObject, RCTBridgeModule {
89
95
  removeCommonDimensionInFactType(index)
90
96
  TagWorks.sharedInstance.setCommonDimension(index: index, numValue: value)
91
97
  }
98
+
99
+ // -- 동적 파라미터
100
+ @objc func setDynamicCommonDimensionWithString(_ key: String, value: String) {
101
+ removeDynamicCommonDimension(key)
102
+ TagWorks.sharedInstance.setDynamicCommonDimension(key: key, value: value)
103
+ }
104
+
105
+ @objc func setDynamicCommonDimensionWithDouble(_ key: String, value: Double) {
106
+ removeDynamicCommonDimension(key)
107
+ TagWorks.sharedInstance.setDynamicCommonDimension(key: key, numValue: value)
108
+ }
92
109
 
110
+ // Dimension 가져오기
93
111
  @objc func getCommonDimensions(_ callback: @escaping RCTResponseSenderBlock) {
94
112
  var dictDimensions: [String: Any] = [:]
95
113
  var generalDimensions: [String: String] = [:]
@@ -98,9 +116,17 @@ class TagWorksModule: NSObject, RCTBridgeModule {
98
116
 
99
117
  for dimension in commonDimensions {
100
118
  if dimension.type == Dimension.generalType {
101
- generalDimensions[String(dimension.index)] = dimension.value
119
+ if dimension.index == -1 {
120
+ generalDimensions[dimension.key] = dimension.value
121
+ } else {
122
+ generalDimensions[String(dimension.index)] = dimension.value
123
+ }
102
124
  } else if dimension.type == Dimension.factType {
103
- factDimensions[String(dimension.index)] = String(dimension.numValue)
125
+ if dimension.index == -1 {
126
+ factDimensions[dimension.key] = String(dimension.numValue)
127
+ } else {
128
+ factDimensions[String(dimension.index)] = String(dimension.numValue)
129
+ }
104
130
  }
105
131
  }
106
132
  let gDimension = ["General": generalDimensions]
@@ -129,11 +155,19 @@ class TagWorksModule: NSObject, RCTBridgeModule {
129
155
  for dimension in commonDimensions {
130
156
  if dimension.type == Dimension.generalType {
131
157
  var dim: [String: String] = [:]
132
- dim["General_\(dimension.index)"] = dimension.value
158
+ if dimension.index == -1 {
159
+ dim["General_\(dimension.key)"] = dimension.value
160
+ } else {
161
+ dim["General_\(dimension.index)"] = dimension.value
162
+ }
133
163
  dimensionsArray.append(dim)
134
164
  } else if dimension.type == Dimension.factType {
135
165
  var dim: [String: String] = [:]
136
- dim["Fact_\(dimension.index)"] = String(dimension.numValue)
166
+ if dimension.index == -1 {
167
+ dim["Fact_\(dimension.key)"] = String(dimension.numValue)
168
+ } else {
169
+ dim["Fact_\(dimension.index)"] = String(dimension.numValue)
170
+ }
137
171
  dimensionsArray.append(dim)
138
172
  }
139
173
  }
@@ -169,7 +203,117 @@ class TagWorksModule: NSObject, RCTBridgeModule {
169
203
  callback([])
170
204
  }
171
205
  }
206
+
207
+ // -- 동적 파라미터
208
+ @objc func getDynamicCommonDimensions(_ callback: @escaping RCTResponseSenderBlock) {
209
+ var dictDimensions: [String: Any] = [:]
210
+ var dynamicDimensions: [String: String] = [:]
211
+ let commonDimensions = TagWorks.sharedInstance.getCommonDimensions()
212
+
213
+ for dimension in commonDimensions {
214
+ if dimension.type == Dimension.generalType {
215
+ if dimension.index == -1 {
216
+ dynamicDimensions[dimension.key] = dimension.value
217
+ } else {
218
+ dynamicDimensions[String(dimension.index)] = dimension.value
219
+ }
220
+ } else if dimension.type == Dimension.factType {
221
+ if dimension.index == -1 {
222
+ dynamicDimensions[dimension.key] = String(dimension.numValue)
223
+ } else {
224
+ dynamicDimensions[String(dimension.index)] = String(dimension.numValue)
225
+ }
226
+ }
227
+ }
228
+
229
+ dictDimensions["Dimensions"] = dynamicDimensions
230
+
231
+ do {
232
+ // Dictionary Array를 JSON으로 변환
233
+ let jsonData = try JSONSerialization.data(withJSONObject: dictDimensions, options: .prettyPrinted)
234
+
235
+ // JSON 데이터를 문자열로 변환하여 반환
236
+ if let jsonString = String(data: jsonData, encoding: .utf8) {
237
+ callback([jsonString]) // JSON 문자열을 JavaScript로 전달
238
+ }
239
+ } catch {
240
+ print("JSON 변환 오류: \(error)")
241
+ callback([NSNull()])
242
+ }
243
+ }
244
+
245
+ /// key 값에 맞춰서 리턴
246
+ @objc func getDynamicCommonDimensionsOfArrayIndex(_ callback: @escaping RCTResponseSenderBlock) {
247
+ var dimensionsArray: [[String:String]] = []
248
+ // var dictDimensions: [String:String] = [:]
249
+ let commonDimensions = TagWorks.sharedInstance.getCommonDimensions()
250
+
251
+ for dimension in commonDimensions {
252
+ if dimension.type == Dimension.generalType {
253
+ var dim: [String: String] = [:]
254
+ if dimension.index == -1 {
255
+ dim[dimension.key] = dimension.value
256
+ } else {
257
+ dim[String(dimension.index)] = dimension.value
258
+ }
259
+ dimensionsArray.append(dim)
260
+ } else if dimension.type == Dimension.factType {
261
+ var dim: [String: String] = [:]
262
+ if dimension.index == -1 {
263
+ dim[dimension.key] = String(dimension.numValue)
264
+ } else {
265
+ dim[String(dimension.index)] = String(dimension.numValue)
266
+ }
267
+ dimensionsArray.append(dim)
268
+ }
269
+ }
270
+
271
+ do {
272
+ // Dictionary Array를 JSON으로 변환
273
+ let jsonData = try JSONSerialization.data(withJSONObject: dimensionsArray, options: .prettyPrinted)
274
+
275
+ // JSON 데이터를 문자열로 변환하여 반환
276
+ if let jsonString = String(data: jsonData, encoding: .utf8) {
277
+ callback([jsonString]) // JSON 문자열을 JavaScript로 전달
278
+ }
279
+ } catch {
280
+ print("JSON 변환 오류: \(error)")
281
+ callback([NSNull()])
282
+ }
283
+ }
284
+
285
+ @objc func getDynamicCommonDimension(_ key: String, callback: @escaping RCTResponseSenderBlock) {
286
+ let dimension = TagWorks.sharedInstance.getDynamicCommonDimension(key: key)
287
+ if let dimension {
288
+ if dimension.type == Dimension.generalType {
289
+ callback([dimension.value])
290
+ } else {
291
+ callback([dimension.numValue])
292
+ }
293
+ } else {
294
+ callback([])
295
+ }
296
+ }
297
+
298
+ // @objc func getDynamicCommonDimensionWithString(_ key: String, callback: @escaping RCTResponseSenderBlock) {
299
+ // let dimension = TagWorks.sharedInstance.getDynamicCommonDimension(key: key)
300
+ // if let dimension {
301
+ // callback([dimension.value])
302
+ // } else {
303
+ // callback([])
304
+ // }
305
+ // }
306
+ //
307
+ // @objc func getDynamicCommonDimensionWithDouble(_ key: String, callback: @escaping RCTResponseSenderBlock) {
308
+ // let dimension = TagWorks.sharedInstance.getDynamicCommonDimension(key: key)
309
+ // if let dimension {
310
+ // callback([dimension.numValue])
311
+ // } else {
312
+ // callback([])
313
+ // }
314
+ // }
172
315
 
316
+ // Dimension 삭제
173
317
  @objc func removeCommonDimensionInGeneralType(_ index: Int) {
174
318
  TagWorks.sharedInstance.removeCommonDimension(WithType: Dimension.generalType, index: index)
175
319
  }
@@ -185,7 +329,19 @@ class TagWorksModule: NSObject, RCTBridgeModule {
185
329
  @objc func removeAllCommonDimension() {
186
330
  TagWorks.sharedInstance.removeAllCommonDimension()
187
331
  }
332
+
333
+ // -- 동적 파라미터 삭제
334
+ @objc func removeDynamicCommonDimension(_ key: String) {
335
+ TagWorks.sharedInstance.removeDynamicCommonDimension(key: key)
336
+ }
337
+
338
+ @objc func removeDynamicCommonDimensionWithArrayIndex(_ index: Int) {
339
+ TagWorks.sharedInstance.removeDynamicCommonDimensionWithArrayIndex(index)
340
+ }
188
341
 
342
+ @objc func removeAllDynamicCommonDimension() {
343
+ TagWorks.sharedInstance.removeAllDynamicCommonDimension()
344
+ }
189
345
 
190
346
  // MARK: LogEvent 및 WebInterface 구현
191
347
 
@@ -220,14 +376,30 @@ class TagWorksModule: NSObject, RCTBridgeModule {
220
376
  genericDimensions = dimension["General"] as! [String: String]
221
377
 
222
378
  for (key, value) in genericDimensions {
223
- eventDimensions.append(TagWorks_SDK_iOS.Dimension(index: Int(key)!, stringValue: value))
379
+ if TagWorks.sharedInstance.isUseDynamicParameter {
380
+ eventDimensions.append(TagWorks_SDK_iOS.Dimension(key: key, value: value))
381
+ } else {
382
+ if Int(key) != nil {
383
+ eventDimensions.append(TagWorks_SDK_iOS.Dimension(index: Int(key)!, value: value))
384
+ } else {
385
+ eventDimensions.append(TagWorks_SDK_iOS.Dimension(key: key, value: value))
386
+ }
387
+ }
224
388
  }
225
389
  }
226
390
  if dimension["Fact"] != nil {
227
391
  factDimensions = dimension["Fact"] as! [String: Any]
228
392
 
229
393
  for (key, value) in factDimensions {
230
- eventDimensions.append(TagWorks_SDK_iOS.Dimension(index: Int(key)!, numValue: Double(value as! String) ?? 0.0))
394
+ if TagWorks.sharedInstance.isUseDynamicParameter {
395
+ eventDimensions.append(TagWorks_SDK_iOS.Dimension(key: key, numValue: Double(value as! String) ?? 0.0))
396
+ } else {
397
+ if Int(key) != nil {
398
+ eventDimensions.append(TagWorks_SDK_iOS.Dimension(index: Int(key)!, numValue: Double(value as! String) ?? 0.0))
399
+ } else {
400
+ eventDimensions.append(TagWorks_SDK_iOS.Dimension(key: key, numValue: Double(value as! String) ?? 0.0))
401
+ }
402
+ }
231
403
  }
232
404
  }
233
405
  }
@@ -18,25 +18,41 @@ RCT_EXTERN_METHOD(initializeTagWorks:(NSString *)siteId
18
18
  isManualDispatch:(BOOL)isManualDispatch
19
19
  // userAgent:(NSString *)userAgent
20
20
  appVersion:(NSString *)appVersion
21
- appName:(NSString *)appName)
21
+ appName:(NSString *)appName
22
+ isUseDynamicParameter:(BOOL)isUseDynamicParameter)
22
23
 
23
24
  RCT_EXTERN_METHOD(setIsDebugPrint:(BOOL)value)
24
25
  RCT_EXTERN_METHOD(setLogLevel:(int)level)
25
26
  RCT_EXTERN_METHOD(setOptOut:(BOOL)value)
26
27
  RCT_EXTERN_METHOD(setUserId:(NSString *)value)
28
+ RCT_EXTERN_METHOD(setAdId:(NSString *)value)
27
29
  RCT_EXTERN_METHOD(dispatch:(RCTResponseSenderBlock) callback)
28
30
 
29
31
  RCT_EXTERN_METHOD(setCommonDimensionWithString:(int)index value:(NSString *)value)
30
32
  RCT_EXTERN_METHOD(setCommonDimensionWithDouble:(int)index value:(double)value)
33
+
31
34
  RCT_EXTERN_METHOD(getCommonDimensions:(RCTResponseSenderBlock) callback)
32
35
  RCT_EXTERN_METHOD(getCommonDimensionsOfArrayIndex:(RCTResponseSenderBlock) callback)
33
36
  RCT_EXTERN_METHOD(getCommonDimensionWithString:(int)index callback:(RCTResponseSenderBlock) callback)
34
37
  RCT_EXTERN_METHOD(getCommonDimensionWithDouble:(int)index callback:(RCTResponseSenderBlock) callback)
38
+
35
39
  RCT_EXTERN_METHOD(removeCommonDimensionInGeneralType:(int)index)
36
40
  RCT_EXTERN_METHOD(removeCommonDimensionInFactType:(int)index)
37
41
  RCT_EXTERN_METHOD(removeCommonDimensionWithArrayIndex:(int)index)
38
42
  RCT_EXTERN_METHOD(removeAllCommonDimension)
39
43
 
44
+ // -- 동적 파라미터
45
+ RCT_EXTERN_METHOD(setDynamicCommonDimensionWithString:(NSString *)key value:(NSString *)value)
46
+ RCT_EXTERN_METHOD(setDynamicCommonDimensionWithDouble:(NSString *)key value:(double)value)
47
+
48
+ RCT_EXTERN_METHOD(getDynamicCommonDimensions:(RCTResponseSenderBlock) callback)
49
+ RCT_EXTERN_METHOD(getDynamicCommonDimensionsOfArrayIndex:(RCTResponseSenderBlock) callback)
50
+ RCT_EXTERN_METHOD(getDynamicCommonDimension:(NSString *)key callback:(RCTResponseSenderBlock) callback)
51
+
52
+ RCT_EXTERN_METHOD(removeDynamicCommonDimension:(NSString *)key)
53
+ RCT_EXTERN_METHOD(removeDynamicCommonDimensionWithArrayIndex:(int)index)
54
+ RCT_EXTERN_METHOD(removeAllDynamicCommonDimension)
55
+
40
56
  RCT_EXTERN_METHOD(logEvent:(NSString *)type dataBundleString:(NSString *)dataBundleString callback:(RCTResponseSenderBlock) callback)
41
57
  RCT_EXTERN_METHOD(webInterfaceDidReceive:(NSString *) message)
42
58
  RCT_EXTERN_METHOD(sendReferrerEventWithOpenUrlString:(NSString *) openURLString)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tagworks-sdk-v1-react",
3
- "version": "1.1.13",
3
+ "version": "1.1.15",
4
4
  "description": "TagWorks SDK React Native Library",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/commonjs/index.js",
@@ -15,8 +15,8 @@ Pod::Spec.new do |s|
15
15
  s.source = { :git => "http://192.168.20.44:8443/etc/mobile/sdk/tagworks-sdk-v1-react.git", :tag => "#{s.version}" }
16
16
 
17
17
  s.source_files = "ios/**/*.{h,m,mm,swift}"
18
- # s.dependency "TagWorks-SDK-iOS", '~> 1.1.18'
19
- s.dependency "TagWorks-SDK-iOS"
18
+ s.dependency "TagWorks-SDK-iOS", '~> 1.1.22'
19
+ # s.dependency "TagWorks-SDK-iOS"
20
20
 
21
21
  # Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
22
22
  # See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.