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
@@ -1,37 +1,33 @@
1
1
  package com.tagworkssdkv1
2
2
 
3
- import android.util.Log
4
- import android.view.ViewGroup
5
- import com.facebook.react.bridge.Arguments
6
- import com.facebook.react.bridge.Promise
7
3
  import com.facebook.react.bridge.ReactApplicationContext
8
4
  import com.facebook.react.bridge.ReactContextBaseJavaModule
9
5
  import com.facebook.react.bridge.ReactMethod
10
6
  import com.obzen.tagworks.TagWorksPopup
11
7
 
12
8
  class TagWorksPopupModule(reactApplicationContext: ReactApplicationContext) :
13
- ReactContextBaseJavaModule(reactApplicationContext) {
14
- override fun getName(): String {
15
- return "TagWorksPopupModule"
16
-
17
- }
18
-
19
-
20
- @ReactMethod
21
- fun onCMSPopup(
22
- onCmsUrl: String,
23
- custId: String?,
24
- rcmdAreaCd: String
25
- ) {
26
- val currentActivity = reactApplicationContext.currentActivity ?: return
27
-
28
- TagWorksPopup.onCMSPopup(
29
- onCmsUrl,
30
- custId,
31
- rcmdAreaCd,
32
- currentActivity
33
- )
34
- }
9
+ ReactContextBaseJavaModule(reactApplicationContext) {
10
+ override fun getName(): String {
11
+ return "TagWorksPopupModule"
12
+
13
+ }
14
+
15
+
16
+ @ReactMethod
17
+ fun onCMSPopup(
18
+ onCmsUrl: String,
19
+ custId: String?,
20
+ rcmdAreaCd: String
21
+ ) {
22
+ val currentActivity = reactApplicationContext.currentActivity ?: return
23
+
24
+ TagWorksPopup.onCMSPopup(
25
+ onCmsUrl,
26
+ custId,
27
+ rcmdAreaCd,
28
+ currentActivity
29
+ )
30
+ }
35
31
 
36
32
  // @ReactMethod
37
33
  // fun onCMSPopupBanner(
@@ -9,11 +9,12 @@ import com.facebook.react.uimanager.ViewManager
9
9
  class TagworksSdkV1Package : ReactPackage {
10
10
  override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> {
11
11
  // return listOf(TagworksSdkV1Module(reactContext))
12
- return listOf(TagworksSdkV1Module(reactContext),
12
+ return listOf(
13
13
  TagWorksPopupModule(reactContext),
14
14
  DataBundleModule(reactContext),
15
15
  TagWorksModule(reactContext),
16
- StandardEventModule(reactContext))
16
+ StandardEventModule(reactContext),
17
+ TagWorksDeeplinkModule(reactContext))
17
18
  }
18
19
 
19
20
  override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
@@ -7,13 +7,13 @@
7
7
 
8
8
  import Foundation
9
9
  import React
10
- import TagWorks_SDK_iOS
10
+ import TagWorks_SDK_iOS_v1
11
11
 
12
12
  @objc(DataBundleModule)
13
13
  class DataBundleModule: NSObject, RCTBridgeModule {
14
14
 
15
15
  var dataDictionary: [String: String] = [:]
16
- var eventDimensions: [TagWorks_SDK_iOS.Dimension] = []
16
+ var eventDimensions: [TagWorks_SDK_iOS_v1.Dimension] = []
17
17
 
18
18
  static func moduleName() -> String {
19
19
  return "DataBundleModule"
@@ -77,9 +77,9 @@ class DataBundleModule: NSObject, RCTBridgeModule {
77
77
  for (key, value) in genericDimensions {
78
78
  // if TagWorks_SDK_iOS.TagWorks.sharedInstance.isUseDynamicParameter == false {
79
79
  if Int(key) != nil {
80
- self.eventDimensions.append(TagWorks_SDK_iOS.Dimension(index: Int(key)!, stringValue: value))
80
+ self.eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(index: Int(key)!, stringValue: value))
81
81
  } else {
82
- self.eventDimensions.append(TagWorks_SDK_iOS.Dimension(key: key, value: value))
82
+ self.eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(key: key, value: value))
83
83
  }
84
84
  }
85
85
  }
@@ -89,9 +89,9 @@ class DataBundleModule: NSObject, RCTBridgeModule {
89
89
  for (key, value) in factDimensions {
90
90
  // if TagWorks_SDK_iOS.TagWorks.sharedInstance.isUseDynamicParameter == false {
91
91
  if Int(key) != nil {
92
- self.eventDimensions.append(TagWorks_SDK_iOS.Dimension(index: Int(key)!, numValue: Double(value as! String) ?? 0.0))
92
+ self.eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(index: Int(key)!, numValue: Double(value as! String) ?? 0.0))
93
93
  } else {
94
- self.eventDimensions.append(TagWorks_SDK_iOS.Dimension(key: key, numValue: Double(value as! String) ?? 0.0))
94
+ self.eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(key: key, numValue: Double(value as! String) ?? 0.0))
95
95
  }
96
96
  }
97
97
  }
@@ -256,7 +256,7 @@ class DataBundleModule: NSObject, RCTBridgeModule {
256
256
  }
257
257
 
258
258
  @objc func getDimensionWithString(_ index: Int, callback: @escaping RCTResponseSenderBlock) {
259
- let dimension: TagWorks_SDK_iOS.Dimension? = self.eventDimensions.filter {$0.index == index && $0.type == Dimension.generalType}.first
259
+ let dimension: TagWorks_SDK_iOS_v1.Dimension? = self.eventDimensions.filter {$0.index == index && $0.type == Dimension.generalType}.first
260
260
  if let dimension {
261
261
  callback([dimension.value])
262
262
  } else {
@@ -265,7 +265,7 @@ class DataBundleModule: NSObject, RCTBridgeModule {
265
265
  }
266
266
 
267
267
  @objc func getDimensionWithDouble(_ index: Int, callback: @escaping RCTResponseSenderBlock) {
268
- let dimension: TagWorks_SDK_iOS.Dimension? = self.eventDimensions.filter {$0.index == index && $0.type == Dimension.factType}.first
268
+ let dimension: TagWorks_SDK_iOS_v1.Dimension? = self.eventDimensions.filter {$0.index == index && $0.type == Dimension.factType}.first
269
269
  if let dimension {
270
270
  callback([String(dimension.numValue)])
271
271
  } else {
@@ -6,7 +6,7 @@
6
6
  //
7
7
 
8
8
  import Foundation
9
- import TagWorks_SDK_iOS
9
+ import TagWorks_SDK_iOS_v1
10
10
 
11
11
  @objc(OnCmsBannerViewManager)
12
12
  class OnCmsBannerViewManager: RCTViewManager {
@@ -61,7 +61,8 @@ class OnCmsBannerView: UIView {
61
61
 
62
62
  private var isReady: Bool {
63
63
  // return !onCmsUrlProp.isEmpty && !rcmdAreaCdProp.isEmpty && !custIdProp.isEmpty
64
- return !onCmsUrlProp.isEmpty && !rcmdAreaCdProp.isEmpty
64
+ // return !onCmsUrlProp.isEmpty && !rcmdAreaCdProp.isEmpty
65
+ return true
65
66
  }
66
67
 
67
68
  @objc var onCmsUrl: NSString = "" {
@@ -101,9 +102,9 @@ class OnCmsBannerView: UIView {
101
102
  }
102
103
 
103
104
  private func attachBanner() {
104
- guard !onCmsUrlProp.isEmpty, !rcmdAreaCdProp.isEmpty else {
105
- return
106
- }
105
+ // guard !onCmsUrlProp.isEmpty, !rcmdAreaCdProp.isEmpty else {
106
+ // return
107
+ // }
107
108
 
108
109
  // TagWorks SDK가 제공하는 iOS 메서드 사용
109
110
  TagWorksPopup.sharedInstance.onCMSPopupBanner(onCmsUrl: onCmsUrlProp,
@@ -0,0 +1,64 @@
1
+ //
2
+ // TagWorksDeeplinkModule.swift
3
+ // TagWorks_SDK_React
4
+ //
5
+ // Created by obzen on 09/01/25.
6
+ //
7
+
8
+ import Foundation
9
+ import React
10
+ import TagWorks_SDK_iOS_v1
11
+
12
+ @objc(TagWorksDeeplinkModule)
13
+ // class TagWorksDeeplinkModule: NSObject, RCTBridgeModule {
14
+ class TagWorksDeeplinkModule: RCTEventEmitter {
15
+
16
+ private var hasDeeplinkListener: Bool = false
17
+
18
+ static override func moduleName() -> String {
19
+ return "TagWorksDeeplinkModule"
20
+ }
21
+
22
+ // 네이티브 모듈에서 사용할 상수값을 반환하는 함수
23
+ @objc static override func requiresMainQueueSetup() -> Bool {
24
+ return true
25
+ }
26
+
27
+ // MARK: Deeplink Interface
28
+
29
+ // iOS는 스위즐링을 통해 앱 실행 중 들어오는 딥링크는 자동 감지하기에, cold start로 들어오는 딥링크 정보만을 처리..
30
+ @objc func handleDeeplinkUrl(_ url: String) {
31
+ TagWorks.sharedInstance.launchWithOptions(url: URL(string: url), userInfo: nil)
32
+ }
33
+
34
+ // iOS는 디퍼드 딥링크 체크를 setInstanceConfig() 메서드에서 진행하기 때문에 따로 메서드를 구현하지 않고 인터페이스만 생성함. (혹시 모를 사이드 이펙트를 방지하기 위함)
35
+ @objc func handleDeferredDeeplink() {
36
+
37
+ }
38
+
39
+
40
+ // MARK: 딥링크 콜백 관련 이벤트 Emitter
41
+ // ================================
42
+ override func supportedEvents() -> [String]! {
43
+ return ["TagWorks_DeeplinkEvent"]
44
+ }
45
+
46
+ override func startObserving() {
47
+ hasDeeplinkListener = true
48
+ // SDK 콜백 등록
49
+ TagWorks.sharedInstance.registerDeeplinkCallback { isTagWorksDeeplink, deeplinkURL in
50
+ if self.hasDeeplinkListener {
51
+ self.sendEvent(withName: "TagWorks_DeeplinkEvent", body: [
52
+ "isTagWorksDeeplink": isTagWorksDeeplink,
53
+ "deeplinkURL": deeplinkURL.absoluteString
54
+ ])
55
+ }
56
+ }
57
+ }
58
+
59
+ override func stopObserving() {
60
+ hasDeeplinkListener = false
61
+ }
62
+
63
+ // ================================
64
+ }
@@ -0,0 +1,19 @@
1
+ //
2
+ // TagWorksDeeplinkModuleBridge.m
3
+ // TagWorks_SDK_React
4
+ //
5
+ // Created by obzen on 09/01/25.
6
+ //
7
+
8
+ #import <Foundation/Foundation.h>
9
+ #import <React/RCTBridgeModule.h>
10
+
11
+ @interface RCT_EXTERN_MODULE(TagWorksDeeplinkModule, NSObject)
12
+
13
+ RCT_EXTERN_METHOD(handleDeeplinkUrl:(NSString *) url)
14
+ RCT_EXTERN_METHOD(handleDeferredDeeplink)
15
+
16
+ //RCT_EXTERN_METHOD(getCommonDimensionWithString:(int)index callback:(RCTResponseSenderBlock) callback)
17
+ //RCT_EXTERN_METHOD(getCommonDimensionWithDouble:(int)index callback:(RCTResponseSenderBlock) callback)
18
+
19
+ @end
@@ -7,10 +7,13 @@
7
7
 
8
8
  import Foundation
9
9
  import React
10
- import TagWorks_SDK_iOS
10
+ import TagWorks_SDK_iOS_v1
11
11
 
12
12
  @objc(TagWorksModule)
13
13
  class TagWorksModule: NSObject, RCTBridgeModule {
14
+ // class TagWorksModule: RCTEventEmitter {
15
+
16
+ private var hasDeeplinkListener: Bool = false
14
17
 
15
18
  static func moduleName() -> String {
16
19
  return "TagWorksModule"
@@ -22,7 +25,7 @@ class TagWorksModule: NSObject, RCTBridgeModule {
22
25
  }
23
26
 
24
27
  // MARK: 이벤트 상수 선언
25
- // @objc static func constantsToExport() -> [AnyHashable: Any]! {
28
+ // @objc static func constantsToExport() -> [AnyHashable: Any]! {
26
29
  @objc func constantsToExport() -> [AnyHashable: Any]! {
27
30
  // 상수값을 반환합니다. JavaScript로 전달됩니다.
28
31
  return [
@@ -30,7 +33,9 @@ class TagWorksModule: NSObject, RCTBridgeModule {
30
33
  "EVENT_TYPE_USER_EVENT": "EVENT_TYPE_USER_EVENT",
31
34
  ]
32
35
  }
33
- // userAgent: String? = nil,
36
+
37
+ //=================================
38
+
34
39
  // MARK: SDK 초기화
35
40
  @objc func initializeTagWorks(_ siteId: String,
36
41
  baseUrl: String,
@@ -47,7 +52,7 @@ class TagWorksModule: NSObject, RCTBridgeModule {
47
52
  isUseIntervals: isUseIntervals,
48
53
  dispatchInterval: dispatchInterval,
49
54
  sessionTimeOut: sessionTimeOut,
50
- // userAgent: userAgent,
55
+ // userAgent: userAgent,
51
56
  userAgent: nil,
52
57
  isManualDispatch: isManualDispatch,
53
58
  appVersion: appVersion,
@@ -55,10 +60,47 @@ class TagWorksModule: NSObject, RCTBridgeModule {
55
60
  isUseDynamicParameter: isUseDynamicParameter)
56
61
  }
57
62
 
63
+ @objc func initializeTagWorks(_ siteId: String,
64
+ baseUrl: String,
65
+ isUseIntervals: Bool,
66
+ dispatchIntervalWithSeconds: TimeInterval = 3.0,
67
+ sessionTimeOutWithSeconds: TimeInterval = 5.0,
68
+ isManualDispatch: Bool = false,
69
+ appVersion: String? = nil,
70
+ appName: String? = nil,
71
+ isUseDynamicParameter: Bool = true,
72
+ deeplinkServerUrl: String? = nil) {
73
+
74
+ let deepLinkServerUrl: URL?
75
+ if let deeplinkServerUrlString = deeplinkServerUrl {
76
+ deepLinkServerUrl = URL(string: deeplinkServerUrlString)
77
+ } else {
78
+ deepLinkServerUrl = nil
79
+ }
80
+
81
+ TagWorks.sharedInstance.setInstanceConfig(siteId: siteId,
82
+ baseUrl: URL(string: baseUrl)!,
83
+ isUseIntervals: isUseIntervals,
84
+ dispatchIntervalWithSeconds: dispatchIntervalWithSeconds,
85
+ sessionTimeOutWithSeconds: sessionTimeOutWithSeconds,
86
+ isManualDispatch: isManualDispatch,
87
+ appVersion: appVersion,
88
+ appName: appName,
89
+ isUseDynamicParameter: isUseDynamicParameter,
90
+ isEnabledAdId: false,
91
+ deeplinkServerUrl: deepLinkServerUrl)
92
+ }
93
+
58
94
  @objc func setIsDebugPrint(_ value: Bool) {
59
95
  TagWorks.sharedInstance.isDebugLogPrint = value
60
96
  }
61
-
97
+
98
+ @objc func enableTestTool(_ value: Bool) {
99
+ DispatchQueue.main.async {
100
+ TagWorks.sharedInstance.testMode = value
101
+ }
102
+ }
103
+
62
104
  @objc func setLogLevel(_ level: Int) {
63
105
  if level <= 3 {
64
106
  TagWorks.sharedInstance.isDebugLogPrint = true
@@ -74,11 +116,49 @@ class TagWorksModule: NSObject, RCTBridgeModule {
74
116
  @objc func setUserId(_ value: String) {
75
117
  TagWorks.sharedInstance.userId = value
76
118
  }
77
-
119
+
78
120
  @objc func setAdId(_ value: String) {
79
121
  TagWorks.sharedInstance.adId = value
80
122
  }
81
123
 
124
+ @objc func setAutoTrackingPage(_ value: Bool) {
125
+ TagWorks.sharedInstance.autoTrackingPage = value
126
+ }
127
+
128
+ @objc func excludeAutoTrackingPages(_ pageClassNames: [String]) {
129
+
130
+ // 1. RN에서 받은 클래스 이름(String) 배열을 AnyClass 객체 배열로 변환
131
+ var pageClasses: [AnyClass] = []
132
+
133
+ for className in pageClassNames {
134
+ // 문자열로부터 Class 객체 생성 (Objective-C의 NSClassFromString에 해당)
135
+ // Bundle.main.classNamed(className) 또는 NSClassFromString(className) 사용
136
+ if let pageClass = NSClassFromString(className) {
137
+ pageClasses.append(pageClass)
138
+ } else {
139
+ print("Warning: Class \(className) not found.")
140
+ }
141
+ }
142
+
143
+ // 2. 변환된 Class 배열을 TagWorks 함수로 전달
144
+ TagWorks.sharedInstance.excludeAutoTrackingPages(pageClasses)
145
+ }
146
+
147
+ @objc func getAdId(_ callback: @escaping RCTResponseSenderBlock) {
148
+ let result = TagWorks.sharedInstance.adId
149
+ callback([result ?? ""])
150
+ }
151
+
152
+ @objc func getVisitorId(_ callback: @escaping RCTResponseSenderBlock) {
153
+ let result = TagWorks.sharedInstance.visitorId
154
+ callback([result])
155
+ }
156
+
157
+ @objc func isInitialize(_ callback: @escaping RCTResponseSenderBlock) {
158
+ let result = TagWorks.sharedInstance.isInitialize()
159
+ callback([result])
160
+ }
161
+
82
162
  @objc public func dispatch(_ callback: @escaping RCTResponseSenderBlock) {
83
163
  let result = TagWorks.sharedInstance.dispatch()
84
164
  callback([result])
@@ -94,13 +174,13 @@ class TagWorksModule: NSObject, RCTBridgeModule {
94
174
  removeCommonDimensionInFactType(index)
95
175
  TagWorks.sharedInstance.setCommonDimension(index: index, numValue: value)
96
176
  }
97
-
177
+
98
178
  // -- 동적 파라미터
99
179
  @objc func setDynamicCommonDimensionWithString(_ key: String, value: String) {
100
180
  removeDynamicCommonDimension(key)
101
181
  TagWorks.sharedInstance.setDynamicCommonDimension(key: key, value: value)
102
182
  }
103
-
183
+
104
184
  @objc func setDynamicCommonDimensionWithDouble(_ key: String, value: Double) {
105
185
  removeDynamicCommonDimension(key)
106
186
  TagWorks.sharedInstance.setDynamicCommonDimension(key: key, numValue: value)
@@ -124,7 +204,7 @@ class TagWorksModule: NSObject, RCTBridgeModule {
124
204
  if dimension.index == -1 {
125
205
  factDimensions[dimension.key] = String(dimension.numValue)
126
206
  } else {
127
- factDimensions[String(dimension.index)] = String(dimension.numValue)
207
+ factDimensions[String(dimension.index)] = String(dimension.numValue)
128
208
  }
129
209
  }
130
210
  }
@@ -170,7 +250,7 @@ class TagWorksModule: NSObject, RCTBridgeModule {
170
250
  dimensionsArray.append(dim)
171
251
  }
172
252
  }
173
-
253
+
174
254
  do {
175
255
  // Dictionary Array를 JSON으로 변환
176
256
  let jsonData = try JSONSerialization.data(withJSONObject: dimensionsArray, options: .prettyPrinted)
@@ -202,7 +282,7 @@ class TagWorksModule: NSObject, RCTBridgeModule {
202
282
  callback([])
203
283
  }
204
284
  }
205
-
285
+
206
286
  // -- 동적 파라미터
207
287
  @objc func getDynamicCommonDimensions(_ callback: @escaping RCTResponseSenderBlock) {
208
288
  var dictDimensions: [String: Any] = [:]
@@ -224,7 +304,7 @@ class TagWorksModule: NSObject, RCTBridgeModule {
224
304
  }
225
305
  }
226
306
  }
227
-
307
+
228
308
  dictDimensions["Dimensions"] = dynamicDimensions
229
309
 
230
310
  do {
@@ -240,11 +320,11 @@ class TagWorksModule: NSObject, RCTBridgeModule {
240
320
  callback([NSNull()])
241
321
  }
242
322
  }
243
-
323
+
244
324
  /// key 값에 맞춰서 리턴
245
325
  @objc func getDynamicCommonDimensionsOfArrayIndex(_ callback: @escaping RCTResponseSenderBlock) {
246
326
  var dimensionsArray: [[String:String]] = []
247
- // var dictDimensions: [String:String] = [:]
327
+ // var dictDimensions: [String:String] = [:]
248
328
  let commonDimensions = TagWorks.sharedInstance.getCommonDimensions()
249
329
 
250
330
  for dimension in commonDimensions {
@@ -266,7 +346,7 @@ class TagWorksModule: NSObject, RCTBridgeModule {
266
346
  dimensionsArray.append(dim)
267
347
  }
268
348
  }
269
-
349
+
270
350
  do {
271
351
  // Dictionary Array를 JSON으로 변환
272
352
  let jsonData = try JSONSerialization.data(withJSONObject: dimensionsArray, options: .prettyPrinted)
@@ -280,7 +360,7 @@ class TagWorksModule: NSObject, RCTBridgeModule {
280
360
  callback([NSNull()])
281
361
  }
282
362
  }
283
-
363
+
284
364
  @objc func getDynamicCommonDimension(_ key: String, callback: @escaping RCTResponseSenderBlock) {
285
365
  let dimension = TagWorks.sharedInstance.getDynamicCommonDimension(key: key)
286
366
  if let dimension {
@@ -304,20 +384,20 @@ class TagWorksModule: NSObject, RCTBridgeModule {
304
384
  }
305
385
 
306
386
  @objc func removeCommonDimensionWithArrayIndex(_ index: Int) {
307
- TagWorks.sharedInstance.removeCommonDimensionWithArrayIndex(index)
387
+ TagWorks.sharedInstance.removeCommonDimensionWithArrayIndex(index)
308
388
  }
309
389
 
310
390
  @objc func removeAllCommonDimension() {
311
391
  TagWorks.sharedInstance.removeAllCommonDimension()
312
392
  }
313
-
393
+
314
394
  // -- 동적 파라미터 삭제
315
395
  @objc func removeDynamicCommonDimension(_ key: String) {
316
396
  TagWorks.sharedInstance.removeDynamicCommonDimension(key: key)
317
397
  }
318
398
 
319
399
  @objc func removeDynamicCommonDimensionWithArrayIndex(_ index: Int) {
320
- TagWorks.sharedInstance.removeDynamicCommonDimensionWithArrayIndex(index)
400
+ TagWorks.sharedInstance.removeDynamicCommonDimensionWithArrayIndex(index)
321
401
  }
322
402
 
323
403
  @objc func removeAllDynamicCommonDimension() {
@@ -328,8 +408,8 @@ class TagWorksModule: NSObject, RCTBridgeModule {
328
408
 
329
409
  @objc func logEvent(_ type: String, dataBundleString: String, callback: @escaping RCTResponseSenderBlock) {
330
410
 
331
- let dataBundle = TagWorks_SDK_iOS.DataBundle()
332
- var eventDimensions: [TagWorks_SDK_iOS.Dimension] = []
411
+ let dataBundle = TagWorks_SDK_iOS_v1.DataBundle()
412
+ var eventDimensions: [TagWorks_SDK_iOS_v1.Dimension] = []
333
413
 
334
414
  // dataBundleString을 Dictioanary로 변환 후 DataBundle 값을 채움
335
415
  if let data = dataBundleString.data(using: .utf8) {
@@ -358,12 +438,12 @@ class TagWorksModule: NSObject, RCTBridgeModule {
358
438
 
359
439
  for (key, value) in genericDimensions {
360
440
  if TagWorks.sharedInstance.isUseDynamicParameter {
361
- eventDimensions.append(TagWorks_SDK_iOS.Dimension(key: key, value: value))
441
+ eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(key: key, value: value))
362
442
  } else {
363
443
  if Int(key) != nil {
364
- eventDimensions.append(TagWorks_SDK_iOS.Dimension(index: Int(key)!, value: value))
444
+ eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(index: Int(key)!, value: value))
365
445
  } else {
366
- eventDimensions.append(TagWorks_SDK_iOS.Dimension(key: key, value: value))
446
+ eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(key: key, value: value))
367
447
  }
368
448
  }
369
449
  }
@@ -373,12 +453,12 @@ class TagWorksModule: NSObject, RCTBridgeModule {
373
453
 
374
454
  for (key, value) in factDimensions {
375
455
  if TagWorks.sharedInstance.isUseDynamicParameter {
376
- eventDimensions.append(TagWorks_SDK_iOS.Dimension(key: key, numValue: value as! Double))
456
+ eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(key: key, numValue: value as! Double))
377
457
  } else {
378
458
  if Int(key) != nil {
379
- eventDimensions.append(TagWorks_SDK_iOS.Dimension(index: Int(key)!, numValue: value as! Double))
459
+ eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(index: Int(key)!, numValue: value as! Double))
380
460
  } else {
381
- eventDimensions.append(TagWorks_SDK_iOS.Dimension(key: key, numValue: value as! Double))
461
+ eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(key: key, numValue: value as! Double))
382
462
  }
383
463
  }
384
464
  }
@@ -405,6 +485,8 @@ class TagWorksModule: NSObject, RCTBridgeModule {
405
485
  if dictionary.keys.contains("e_a") {
406
486
  if dictionary["e_a"] as! String == "obzen" {
407
487
  TagWorks.sharedInstance.webViewInterface.webInterfaceDidReceiveDictionary(dictionary)
488
+ } else if dictionary["e_a"] as! String == "obzenoncms" {
489
+ TagWorks.sharedInstance.webViewInterface.webInterfaceDidReceiveOnCmsPopupDictionary(dictionary)
408
490
  }
409
491
  }
410
492
  }
@@ -418,4 +500,8 @@ class TagWorksModule: NSObject, RCTBridgeModule {
418
500
  guard let urlString = URL(string: openURLString) else { return }
419
501
  TagWorks.sharedInstance.sendReferrerEvent(openURL: urlString)
420
502
  }
503
+
504
+ @objc func saveErrorReport(_ errorType: String, errorMessage: String) {
505
+ TagWorks.sharedInstance.saveErrorReport(errorType: errorType, errorMessage: errorMessage)
506
+ }
421
507
  }
@@ -7,6 +7,7 @@
7
7
 
8
8
  #import <Foundation/Foundation.h>
9
9
  #import <React/RCTBridgeModule.h>
10
+ #import <React/RCTEventEmitter.h>
10
11
 
11
12
  @interface RCT_EXTERN_MODULE(TagWorksModule, NSObject)
12
13
 
@@ -16,16 +17,32 @@ RCT_EXTERN_METHOD(initializeTagWorks:(NSString *)siteId
16
17
  dispatchInterval:(NSTimeInterval)dispatchInterval
17
18
  sessionTimeOut:(NSTimeInterval)sessionTimeOut
18
19
  isManualDispatch:(BOOL)isManualDispatch
19
- // userAgent:(NSString *)userAgent
20
20
  appVersion:(NSString *)appVersion
21
21
  appName:(NSString *)appName
22
22
  isUseDynamicParameter:(BOOL)isUseDynamicParameter)
23
+
24
+ RCT_EXTERN_METHOD(initializeTagWorks:(NSString *)siteId
25
+ baseUrl:(NSString *)baseUrl
26
+ isUseIntervals:(BOOL)isUseIntervals
27
+ dispatchIntervalWithSeconds:(NSTimeInterval)dispatchIntervalWithSeconds
28
+ sessionTimeOutWithSeconds:(NSTimeInterval)sessionTimeOutWithSeconds
29
+ isManualDispatch:(BOOL)isManualDispatch
30
+ appVersion:(NSString *)appVersion
31
+ appName:(NSString *)appName
32
+ isUseDynamicParameter:(BOOL)isUseDynamicParameter
33
+ deeplinkServerUrl:(NSString *)deeplinkServerUrl)
23
34
 
24
35
  RCT_EXTERN_METHOD(setIsDebugPrint:(BOOL)value)
36
+ RCT_EXTERN_METHOD(enableTestTool:(BOOL)value)
25
37
  RCT_EXTERN_METHOD(setLogLevel:(int)level)
26
38
  RCT_EXTERN_METHOD(setOptOut:(BOOL)value)
27
39
  RCT_EXTERN_METHOD(setUserId:(NSString *)value)
28
40
  RCT_EXTERN_METHOD(setAdId:(NSString *)value)
41
+ RCT_EXTERN_METHOD(setAutoTrackingPage:(BOOL)value)
42
+ RCT_EXTERN_METHOD(excludeAutoTrackingPages:(NSArray<NSString *> *)pageClassNames)
43
+ RCT_EXTERN_METHOD(getAdId:(RCTResponseSenderBlock) callback)
44
+ RCT_EXTERN_METHOD(getVisitorId:(RCTResponseSenderBlock) callback)
45
+ RCT_EXTERN_METHOD(isInitialize:(RCTResponseSenderBlock) callback)
29
46
  RCT_EXTERN_METHOD(dispatch:(RCTResponseSenderBlock) callback)
30
47
 
31
48
  RCT_EXTERN_METHOD(setCommonDimensionWithString:(int)index value:(NSString *)value)
@@ -57,6 +74,7 @@ RCT_EXTERN_METHOD(logEvent:(NSString *)type dataBundleString:(NSString *)dataBun
57
74
  RCT_EXTERN_METHOD(webInterfaceDidReceive:(NSString *) message)
58
75
  RCT_EXTERN_METHOD(sendReferrerEventWithOpenUrlString:(NSString *) openURLString)
59
76
 
60
- @end
77
+ RCT_EXTERN_METHOD(saveErrorReport:(NSString *)errorType errorMessage:(NSString *)errorMessage)
61
78
 
79
+ @end
62
80