tagworks-sdk-v1-react 1.1.21 → 1.1.23

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 +6 -1049
  3. package/android/build.gradle +1 -1
  4. package/android/src/main/java/com/tagworkssdkv1/DataBundleModule.kt +2 -27
  5. package/android/src/main/java/com/tagworkssdkv1/OnCmsBannerView.kt +68 -0
  6. package/android/src/main/java/com/tagworkssdkv1/OnCmsBannerViewManager.kt +23 -52
  7. package/android/src/main/java/com/tagworkssdkv1/TagWorksDeeplinkModule.kt +2 -2
  8. package/android/src/main/java/com/tagworkssdkv1/TagWorksModule.kt +47 -35
  9. package/android/src/main/java/com/tagworkssdkv1/TagworksSdkV1Package.kt +1 -1
  10. package/ios/DataBundleModule.swift +8 -8
  11. package/ios/OnCMSBannerViewManagerBridge.m +3 -2
  12. package/ios/OnCmsBannerViewManager.swift +145 -43
  13. package/ios/TagWorksDeeplinkModule.swift +1 -1
  14. package/ios/TagWorksDeeplinkModuleBridge.m +0 -34
  15. package/ios/TagWorksModule.swift +58 -45
  16. package/ios/TagWorksModuleBridge.m +14 -10
  17. package/ios/TagWorksPopupModule.swift +41 -24
  18. package/ios/TagWorksPopupModuleBridge.m +2 -0
  19. package/lib/commonjs/OnCmsBannerCommands.js +30 -0
  20. package/lib/commonjs/OnCmsBannerCommands.js.map +1 -0
  21. package/lib/commonjs/RegisterOnCmsBannerView.js +10 -0
  22. package/lib/commonjs/RegisterOnCmsBannerView.js.map +1 -0
  23. package/lib/commonjs/autoTrackers/ReactNavigationPageTracker.js +135 -0
  24. package/lib/commonjs/autoTrackers/ReactNavigationPageTracker.js.map +1 -0
  25. package/lib/commonjs/index.js +21 -5
  26. package/lib/commonjs/index.js.map +1 -1
  27. package/lib/module/OnCmsBannerCommands.js +25 -0
  28. package/lib/module/OnCmsBannerCommands.js.map +1 -0
  29. package/lib/module/RegisterOnCmsBannerView.js +6 -0
  30. package/lib/module/RegisterOnCmsBannerView.js.map +1 -0
  31. package/lib/module/autoTrackers/ReactNavigationPageTracker.js +131 -0
  32. package/lib/module/autoTrackers/ReactNavigationPageTracker.js.map +1 -0
  33. package/lib/module/index.js +8 -5
  34. package/lib/module/index.js.map +1 -1
  35. package/lib/typescript/commonjs/android/build/intermediates/assets/debugAndroidTest/mergeDebugAndroidTestAssets/fingerprint_lib.d.ts +19 -0
  36. package/lib/typescript/commonjs/android/build/intermediates/assets/debugAndroidTest/mergeDebugAndroidTestAssets/fingerprint_lib.d.ts.map +1 -0
  37. package/lib/typescript/commonjs/src/OnCmsBannerCommands.d.ts +2 -0
  38. package/lib/typescript/commonjs/src/OnCmsBannerCommands.d.ts.map +1 -0
  39. package/lib/typescript/commonjs/src/RegisterOnCmsBannerView.d.ts +3 -0
  40. package/lib/typescript/commonjs/src/RegisterOnCmsBannerView.d.ts.map +1 -0
  41. package/lib/typescript/commonjs/src/autoTrackers/ReactNavigationPageTracker.d.ts +12 -0
  42. package/lib/typescript/commonjs/src/autoTrackers/ReactNavigationPageTracker.d.ts.map +1 -0
  43. package/lib/typescript/commonjs/src/index.d.ts +3 -2
  44. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  45. package/lib/typescript/module/android/build/intermediates/assets/debugAndroidTest/mergeDebugAndroidTestAssets/fingerprint_lib.d.ts +19 -0
  46. package/lib/typescript/module/android/build/intermediates/assets/debugAndroidTest/mergeDebugAndroidTestAssets/fingerprint_lib.d.ts.map +1 -0
  47. package/lib/typescript/module/src/OnCmsBannerCommands.d.ts +2 -0
  48. package/lib/typescript/module/src/OnCmsBannerCommands.d.ts.map +1 -0
  49. package/lib/typescript/module/src/RegisterOnCmsBannerView.d.ts +3 -0
  50. package/lib/typescript/module/src/RegisterOnCmsBannerView.d.ts.map +1 -0
  51. package/lib/typescript/module/src/autoTrackers/ReactNavigationPageTracker.d.ts +12 -0
  52. package/lib/typescript/module/src/autoTrackers/ReactNavigationPageTracker.d.ts.map +1 -0
  53. package/lib/typescript/module/src/index.d.ts +3 -2
  54. package/lib/typescript/module/src/index.d.ts.map +1 -1
  55. package/package.json +22 -4
  56. package/src/OnCmsBannerCommands.js +31 -0
  57. package/src/RegisterOnCmsBannerView.js +5 -0
  58. package/src/autoTrackers/ReactNavigationPageTracker.js +137 -0
  59. package/src/index.js +23 -6
  60. package/tagworks-sdk-v1-react.podspec +3 -2
  61. package/android/src/main/java/com/tagworkssdkv1/TagWorks.kt +0 -37
  62. package/android/src/main/java/com/tagworkssdkv1/TagworksSdkV1Module.kt +0 -25
@@ -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 {
@@ -18,6 +18,36 @@ class OnCmsBannerViewManager: RCTViewManager {
18
18
  override func view() -> UIView! {
19
19
  return OnCmsBannerView()
20
20
  }
21
+
22
+ override func constantsToExport() -> [AnyHashable : Any]! {
23
+ return ["Commands": ["attach": 0]]
24
+ }
25
+
26
+
27
+ @objc(setOnCmsBannerParam:params:)
28
+ func setOnCmsBannerParam(_ reactTag: NSNumber, params: [String: Any]) {
29
+ self.bridge.uiManager.addUIBlock { (uiManager, viewRegistry) in
30
+ // reactTag를 이용해 실제 View 인스턴스를 찾음
31
+ if let view = viewRegistry?[reactTag] as? OnCmsBannerView {
32
+ let onCmsUrl = params["onCmsUrl"] as? String
33
+ let cust_id = params["cust_id"] as? String
34
+ let rcmd_area_cd = params["rcmd_area_cd"] as? String
35
+ let defaultImage = params["defaultImage"] as? String
36
+
37
+ // Native View 업데이트
38
+ // view.updateBanner(custId: custId, areaCode: areaCode)
39
+ view.onCMSPopupBanner(
40
+ onCmsUrl: onCmsUrl ?? "",
41
+ cust_id: cust_id ?? "",
42
+ rcmd_area_cd: rcmd_area_cd ?? "",
43
+ defaultImage: defaultImage ?? ""
44
+ )
45
+
46
+ view.setNeedsLayout()
47
+ view.layoutIfNeeded()
48
+ }
49
+ }
50
+ }
21
51
 
22
52
  // @objc func setOnCmsBannerParam(_ reactTag: NSNumber, url: String, custId: String, areaCd: String, defaultImage: String) {
23
53
  // DispatchQueue.main.async {
@@ -30,7 +60,7 @@ class OnCmsBannerViewManager: RCTViewManager {
30
60
  // }
31
61
  }
32
62
 
33
-
63
+ @objc(OnCmsBannerView)
34
64
  class OnCmsBannerView: UIView {
35
65
 
36
66
  private var onCmsUrlProp: String = ""
@@ -39,6 +69,11 @@ class OnCmsBannerView: UIView {
39
69
  private var defaultImageProp: String = ""
40
70
 
41
71
  private var shouldAttachBanner = false
72
+
73
+ private var isReady: Bool {
74
+ return !(self.onCmsUrlProp.isEmpty) && !(self.rcmdAreaCdProp.isEmpty)
75
+ // return true
76
+ }
42
77
 
43
78
  override init(frame: CGRect) {
44
79
  super.init(frame: frame)
@@ -46,73 +81,140 @@ class OnCmsBannerView: UIView {
46
81
  }
47
82
 
48
83
  required init?(coder: NSCoder) {
49
- fatalError("init(coder:) has not been implemented")
84
+ super.init(coder: coder)
85
+ // fatalError("init(coder:) has not been implemented")
86
+ self.backgroundColor = .clear
50
87
  }
51
-
88
+
52
89
  override func layoutSubviews() {
53
90
  super.layoutSubviews()
54
91
  print("layout Size : \(self.frame.size)")
55
-
92
+
56
93
  if shouldAttachBanner && self.frame.size != .zero {
57
94
  attachBanner()
58
95
  shouldAttachBanner = false // 한 번만 실행되도록
59
96
  }
60
97
  }
61
-
62
- private var isReady: Bool {
63
- // return !onCmsUrlProp.isEmpty && !rcmdAreaCdProp.isEmpty && !custIdProp.isEmpty
64
- // return !onCmsUrlProp.isEmpty && !rcmdAreaCdProp.isEmpty
65
- return true
66
- }
67
98
 
68
- @objc var onCmsUrl: NSString = "" {
69
- didSet {
70
- onCmsUrlProp = onCmsUrl as String
71
- checkAndAttach()
72
- }
99
+ // Android: setOnCmsUrl
100
+ @objc func setOnCmsUrl(_ url: String) {
101
+ self.onCmsUrlProp = url
102
+ checkAndAttach()
73
103
  }
74
104
 
75
- @objc var rcmd_area_cd: String = "" {
76
- didSet {
77
- rcmdAreaCdProp = rcmd_area_cd
78
- checkAndAttach()
79
- }
105
+ // Android: setCustId
106
+ @objc func setCust_id(_ id: String?) {
107
+ self.custIdProp = id
108
+ checkAndAttach()
80
109
  }
81
110
 
82
- @objc var cust_id: String = "" {
83
- didSet {
84
- custIdProp = cust_id
85
- checkAndAttach()
86
- }
111
+ // Android: setRcmdAreaCd
112
+ @objc func setRcmd_area_cd(_ code: String) {
113
+ self.rcmdAreaCdProp = code
114
+ checkAndAttach()
87
115
  }
88
-
89
- @objc var defaultImage: String = "" {
90
- didSet {
91
- defaultImageProp = defaultImage
92
- checkAndAttach()
93
- }
116
+
117
+ // Android: setDefaultImage
118
+ @objc func setDefaultImage(_ imageName: String) {
119
+ self.defaultImageProp = imageName
120
+ checkAndAttach()
94
121
  }
95
-
122
+
96
123
  private func checkAndAttach() {
97
124
  if isReady {
98
- // attachBanner()
125
+ attachBanner()
99
126
  shouldAttachBanner = true
100
127
  setNeedsLayout() // layoutSubviews 호출 유도
101
128
  }
102
129
  }
103
130
 
131
+
104
132
  private func attachBanner() {
105
- // guard !onCmsUrlProp.isEmpty, !rcmdAreaCdProp.isEmpty else {
106
- // return
107
- // }
133
+ shouldAttachBanner = true
134
+
135
+ TagWorksPopup.sharedInstance.onCMSPopupBanner(
136
+ onCmsUrl: onCmsUrlProp,
137
+ cust_id: custIdProp ?? "",
138
+ rcmd_area_cd: rcmdAreaCdProp,
139
+ bannerView: self,
140
+ defaultPngImageName: defaultImageProp
141
+ )
142
+ }
143
+
144
+ func onCMSPopupBanner(onCmsUrl: String,
145
+ cust_id: String,
146
+ rcmd_area_cd: String,
147
+ defaultImage: String) {
148
+
149
+ self.onCmsUrlProp = onCmsUrl
150
+ self.custIdProp = cust_id
151
+ self.rcmdAreaCdProp = rcmd_area_cd
152
+ self.defaultImageProp = defaultImage
108
153
 
109
- // TagWorks SDK가 제공하는 iOS 메서드 사용
110
- TagWorksPopup.sharedInstance.onCMSPopupBanner(onCmsUrl: onCmsUrlProp,
111
- cust_id: custIdProp ?? "",
112
- rcmd_area_cd: rcmdAreaCdProp,
113
- bannerView: self,
114
- defaultPngImageName: defaultImageProp)
154
+ attachBanner()
115
155
  }
156
+
157
+
158
+
159
+
160
+ // private var isReady: Bool {
161
+ // // return !onCmsUrlProp.isEmpty && !rcmdAreaCdProp.isEmpty && !custIdProp.isEmpty
162
+ // // return !onCmsUrlProp.isEmpty && !rcmdAreaCdProp.isEmpty
163
+ // return true
164
+ // }
165
+
166
+ // @objc func attachBannerFromJS() {
167
+ // attachBanner()
168
+ // }
169
+
170
+ // @objc var onCmsUrl: NSString = "" {
171
+ // didSet {
172
+ // onCmsUrlProp = onCmsUrl as String
173
+ // checkAndAttach()
174
+ // }
175
+ // }
176
+
177
+ // @objc var rcmd_area_cd: String = "" {
178
+ // didSet {
179
+ // rcmdAreaCdProp = rcmd_area_cd
180
+ // checkAndAttach()
181
+ // }
182
+ // }
183
+
184
+ // @objc var cust_id: String = "" {
185
+ // didSet {
186
+ // custIdProp = cust_id
187
+ // checkAndAttach()
188
+ // }
189
+ // }
190
+
191
+ // @objc var defaultImage: String = "" {
192
+ // didSet {
193
+ // defaultImageProp = defaultImage
194
+ // checkAndAttach()
195
+ // }
196
+ // }
197
+
198
+ // private func checkAndAttach() {
199
+ // if isReady {
200
+ // // attachBanner()
201
+ // shouldAttachBanner = true
202
+ // setNeedsLayout() // layoutSubviews 호출 유도
203
+ // }
204
+ // }
205
+
206
+ // private func attachBanner() {
207
+ // // guard !onCmsUrlProp.isEmpty, !rcmdAreaCdProp.isEmpty else {
208
+ // // return
209
+ // // }
210
+ //
211
+ // // TagWorks SDK가 제공하는 iOS 메서드 사용
212
+ // TagWorksPopup.sharedInstance.onCMSPopupBanner(onCmsUrl: onCmsUrlProp,
213
+ // cust_id: custIdProp ?? "",
214
+ // rcmd_area_cd: rcmdAreaCdProp,
215
+ // bannerView: self,
216
+ // defaultPngImageName: defaultImageProp)
217
+ // }
116
218
 
117
219
 
118
220
 
@@ -7,7 +7,7 @@
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(TagWorksDeeplinkModule)
13
13
  // class TagWorksDeeplinkModule: NSObject, RCTBridgeModule {
@@ -13,41 +13,7 @@
13
13
  RCT_EXTERN_METHOD(handleDeeplinkUrl:(NSString *) url)
14
14
  RCT_EXTERN_METHOD(handleDeferredDeeplink)
15
15
 
16
- //RCT_EXTERN_METHOD(setLogLevel:(int)level)
17
- //RCT_EXTERN_METHOD(setOptOut:(BOOL)value)
18
- //RCT_EXTERN_METHOD(setUserId:(NSString *)value)
19
- //RCT_EXTERN_METHOD(setAdId:(NSString *)value)
20
- //RCT_EXTERN_METHOD(dispatch:(RCTResponseSenderBlock) callback)
21
- //
22
- //RCT_EXTERN_METHOD(setCommonDimensionWithString:(int)index value:(NSString *)value)
23
- //RCT_EXTERN_METHOD(setCommonDimensionWithDouble:(int)index value:(double)value)
24
- //
25
- //RCT_EXTERN_METHOD(getCommonDimensions:(RCTResponseSenderBlock) callback)
26
- //RCT_EXTERN_METHOD(getCommonDimensionsOfArrayIndex:(RCTResponseSenderBlock) callback)
27
16
  //RCT_EXTERN_METHOD(getCommonDimensionWithString:(int)index callback:(RCTResponseSenderBlock) callback)
28
17
  //RCT_EXTERN_METHOD(getCommonDimensionWithDouble:(int)index callback:(RCTResponseSenderBlock) callback)
29
- //
30
- //RCT_EXTERN_METHOD(removeCommonDimensionInGeneralType:(int)index)
31
- //RCT_EXTERN_METHOD(removeCommonDimensionInFactType:(int)index)
32
- //RCT_EXTERN_METHOD(removeCommonDimensionWithArrayIndex:(int)index)
33
- //RCT_EXTERN_METHOD(removeAllCommonDimension)
34
- //
35
- //// -- 동적 파라미터
36
- //RCT_EXTERN_METHOD(setDynamicCommonDimensionWithString:(NSString *)key value:(NSString *)value)
37
- //RCT_EXTERN_METHOD(setDynamicCommonDimensionWithDouble:(NSString *)key value:(double)value)
38
- //
39
- //RCT_EXTERN_METHOD(getDynamicCommonDimensions:(RCTResponseSenderBlock) callback)
40
- //RCT_EXTERN_METHOD(getDynamicCommonDimensionsOfArrayIndex:(RCTResponseSenderBlock) callback)
41
- //RCT_EXTERN_METHOD(getDynamicCommonDimension:(NSString *)key callback:(RCTResponseSenderBlock) callback)
42
- //
43
- //RCT_EXTERN_METHOD(removeDynamicCommonDimension:(NSString *)key)
44
- //RCT_EXTERN_METHOD(removeDynamicCommonDimensionWithArrayIndex:(int)index)
45
- //RCT_EXTERN_METHOD(removeAllDynamicCommonDimension)
46
- //
47
- //RCT_EXTERN_METHOD(logEvent:(NSString *)type dataBundleString:(NSString *)dataBundleString callback:(RCTResponseSenderBlock) callback)
48
- //RCT_EXTERN_METHOD(webInterfaceDidReceive:(NSString *) message)
49
- //RCT_EXTERN_METHOD(sendReferrerEventWithOpenUrlString:(NSString *) openURLString)
50
- //
51
- //RCT_EXTERN_METHOD(saveErrorReport:(NSString *)errorType errorMessage:(NSString *)errorMessage)
52
18
 
53
19
  @end
@@ -7,7 +7,7 @@
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 {
@@ -37,29 +37,6 @@ class TagWorksModule: NSObject, RCTBridgeModule {
37
37
  //=================================
38
38
 
39
39
  // MARK: SDK 초기화
40
- @objc func initializeTagWorks(_ siteId: String,
41
- baseUrl: String,
42
- isUseIntervals: Bool,
43
- dispatchInterval: TimeInterval = 5.0,
44
- sessionTimeOut: TimeInterval = 5.0,
45
- isManualDispatch: Bool = false,
46
- appVersion: String? = nil,
47
- appName: String? = nil,
48
- isUseDynamicParameter: Bool = false) {
49
-
50
- TagWorks.sharedInstance.setInstanceConfig(siteId: siteId,
51
- baseUrl: URL(string: baseUrl)!,
52
- isUseIntervals: isUseIntervals,
53
- dispatchInterval: dispatchInterval,
54
- sessionTimeOut: sessionTimeOut,
55
- // userAgent: userAgent,
56
- userAgent: nil,
57
- isManualDispatch: isManualDispatch,
58
- appVersion: appVersion,
59
- appName: appName,
60
- isUseDynamicParameter: isUseDynamicParameter)
61
- }
62
-
63
40
  @objc func initializeTagWorks(_ siteId: String,
64
41
  baseUrl: String,
65
42
  isUseIntervals: Bool,
@@ -79,22 +56,28 @@ class TagWorksModule: NSObject, RCTBridgeModule {
79
56
  }
80
57
 
81
58
  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)
59
+ baseUrl: URL(string: baseUrl)!,
60
+ isUseIntervals: isUseIntervals,
61
+ dispatchIntervalWithSeconds: dispatchIntervalWithSeconds,
62
+ sessionTimeOutWithSeconds: sessionTimeOutWithSeconds,
63
+ isManualDispatch: isManualDispatch,
64
+ appVersion: appVersion,
65
+ appName: appName,
66
+ isUseDynamicParameter: isUseDynamicParameter,
67
+ isEnabledAdId: false,
68
+ deeplinkServerUrl: deepLinkServerUrl)
92
69
  }
93
70
 
94
71
  @objc func setIsDebugPrint(_ value: Bool) {
95
72
  TagWorks.sharedInstance.isDebugLogPrint = value
96
73
  }
97
74
 
75
+ @objc func enableTestTool(_ value: Bool) {
76
+ DispatchQueue.main.async {
77
+ TagWorks.sharedInstance.testMode = value
78
+ }
79
+ }
80
+
98
81
  @objc func setLogLevel(_ level: Int) {
99
82
  if level <= 3 {
100
83
  TagWorks.sharedInstance.isDebugLogPrint = true
@@ -118,9 +101,39 @@ class TagWorksModule: NSObject, RCTBridgeModule {
118
101
  @objc func setAutoTrackingPage(_ value: Bool) {
119
102
  TagWorks.sharedInstance.autoTrackingPage = value
120
103
  }
121
-
122
- @objc func isInitialize() -> Bool {
123
- return TagWorks.sharedInstance.isInitialize()
104
+
105
+ @objc func excludeAutoTrackingPages(_ pageClassNames: [String]) {
106
+
107
+ // 1. RN에서 받은 클래스 이름(String) 배열을 AnyClass 객체 배열로 변환
108
+ var pageClasses: [AnyClass] = []
109
+
110
+ for className in pageClassNames {
111
+ // 문자열로부터 Class 객체 생성 (Objective-C의 NSClassFromString에 해당)
112
+ // Bundle.main.classNamed(className) 또는 NSClassFromString(className) 사용
113
+ if let pageClass = NSClassFromString(className) {
114
+ pageClasses.append(pageClass)
115
+ } else {
116
+ print("Warning: Class \(className) not found.")
117
+ }
118
+ }
119
+
120
+ // 2. 변환된 Class 배열을 TagWorks 함수로 전달
121
+ TagWorks.sharedInstance.excludeAutoTrackingPages(pageClasses)
122
+ }
123
+
124
+ @objc func getAdId(_ callback: @escaping RCTResponseSenderBlock) {
125
+ let result = TagWorks.sharedInstance.adId
126
+ callback([result ?? ""])
127
+ }
128
+
129
+ @objc func getVisitorId(_ callback: @escaping RCTResponseSenderBlock) {
130
+ let result = TagWorks.sharedInstance.visitorId
131
+ callback([result])
132
+ }
133
+
134
+ @objc func isInitialize(_ callback: @escaping RCTResponseSenderBlock) {
135
+ let result = TagWorks.sharedInstance.isInitialize()
136
+ callback([result])
124
137
  }
125
138
 
126
139
  @objc public func dispatch(_ callback: @escaping RCTResponseSenderBlock) {
@@ -372,8 +385,8 @@ class TagWorksModule: NSObject, RCTBridgeModule {
372
385
 
373
386
  @objc func logEvent(_ type: String, dataBundleString: String, callback: @escaping RCTResponseSenderBlock) {
374
387
 
375
- let dataBundle = TagWorks_SDK_iOS.DataBundle()
376
- var eventDimensions: [TagWorks_SDK_iOS.Dimension] = []
388
+ let dataBundle = TagWorks_SDK_iOS_v1.DataBundle()
389
+ var eventDimensions: [TagWorks_SDK_iOS_v1.Dimension] = []
377
390
 
378
391
  // dataBundleString을 Dictioanary로 변환 후 DataBundle 값을 채움
379
392
  if let data = dataBundleString.data(using: .utf8) {
@@ -402,12 +415,12 @@ class TagWorksModule: NSObject, RCTBridgeModule {
402
415
 
403
416
  for (key, value) in genericDimensions {
404
417
  if TagWorks.sharedInstance.isUseDynamicParameter {
405
- eventDimensions.append(TagWorks_SDK_iOS.Dimension(key: key, value: value))
418
+ eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(key: key, value: value))
406
419
  } else {
407
420
  if Int(key) != nil {
408
- eventDimensions.append(TagWorks_SDK_iOS.Dimension(index: Int(key)!, value: value))
421
+ eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(index: Int(key)!, value: value))
409
422
  } else {
410
- eventDimensions.append(TagWorks_SDK_iOS.Dimension(key: key, value: value))
423
+ eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(key: key, value: value))
411
424
  }
412
425
  }
413
426
  }
@@ -417,12 +430,12 @@ class TagWorksModule: NSObject, RCTBridgeModule {
417
430
 
418
431
  for (key, value) in factDimensions {
419
432
  if TagWorks.sharedInstance.isUseDynamicParameter {
420
- eventDimensions.append(TagWorks_SDK_iOS.Dimension(key: key, numValue: value as! Double))
433
+ eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(key: key, numValue: value as! Double))
421
434
  } else {
422
435
  if Int(key) != nil {
423
- eventDimensions.append(TagWorks_SDK_iOS.Dimension(index: Int(key)!, numValue: value as! Double))
436
+ eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(index: Int(key)!, numValue: value as! Double))
424
437
  } else {
425
- eventDimensions.append(TagWorks_SDK_iOS.Dimension(key: key, numValue: value as! Double))
438
+ eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(key: key, numValue: value as! Double))
426
439
  }
427
440
  }
428
441
  }
@@ -11,15 +11,15 @@
11
11
 
12
12
  @interface RCT_EXTERN_MODULE(TagWorksModule, NSObject)
13
13
 
14
- RCT_EXTERN_METHOD(initializeTagWorks:(NSString *)siteId
15
- baseUrl:(NSString *)baseUrl
16
- isUseIntervals:(BOOL)isUseIntervals
17
- dispatchInterval:(NSTimeInterval)dispatchInterval
18
- sessionTimeOut:(NSTimeInterval)sessionTimeOut
19
- isManualDispatch:(BOOL)isManualDispatch
20
- appVersion:(NSString *)appVersion
21
- appName:(NSString *)appName
22
- isUseDynamicParameter:(BOOL)isUseDynamicParameter)
14
+ // RCT_EXTERN_METHOD(initializeTagWorks:(NSString *)siteId
15
+ // baseUrl:(NSString *)baseUrl
16
+ // isUseIntervals:(BOOL)isUseIntervals
17
+ // dispatchInterval:(NSTimeInterval)dispatchInterval
18
+ // sessionTimeOut:(NSTimeInterval)sessionTimeOut
19
+ // isManualDispatch:(BOOL)isManualDispatch
20
+ // appVersion:(NSString *)appVersion
21
+ // appName:(NSString *)appName
22
+ // isUseDynamicParameter:(BOOL)isUseDynamicParameter)
23
23
 
24
24
  RCT_EXTERN_METHOD(initializeTagWorks:(NSString *)siteId
25
25
  baseUrl:(NSString *)baseUrl
@@ -33,11 +33,16 @@ RCT_EXTERN_METHOD(initializeTagWorks:(NSString *)siteId
33
33
  deeplinkServerUrl:(NSString *)deeplinkServerUrl)
34
34
 
35
35
  RCT_EXTERN_METHOD(setIsDebugPrint:(BOOL)value)
36
+ RCT_EXTERN_METHOD(enableTestTool:(BOOL)value)
36
37
  RCT_EXTERN_METHOD(setLogLevel:(int)level)
37
38
  RCT_EXTERN_METHOD(setOptOut:(BOOL)value)
38
39
  RCT_EXTERN_METHOD(setUserId:(NSString *)value)
39
40
  RCT_EXTERN_METHOD(setAdId:(NSString *)value)
40
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)
41
46
  RCT_EXTERN_METHOD(dispatch:(RCTResponseSenderBlock) callback)
42
47
 
43
48
  RCT_EXTERN_METHOD(setCommonDimensionWithString:(int)index value:(NSString *)value)
@@ -73,4 +78,3 @@ RCT_EXTERN_METHOD(saveErrorReport:(NSString *)errorType errorMessage:(NSString *
73
78
 
74
79
  @end
75
80
 
76
-
@@ -7,41 +7,58 @@
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(TagWorksPopupModule)
13
13
  class TagWorksPopupModule: NSObject, RCTBridgeModule {
14
-
14
+
15
15
  static func moduleName() -> String {
16
16
  return "TagWorksPopupModule"
17
17
  }
18
-
18
+
19
19
  // 네이티브 모듈에서 사용할 상수값을 반환하는 함수
20
20
  @objc static func requiresMainQueueSetup() -> Bool {
21
21
  return true
22
22
  }
23
-
23
+
24
24
  @objc public func onCMSPopup(_ onCmsUrl: String, custId: String, rcmdAreaCd: String) {
25
- DispatchQueue.main.async {
26
- guard var currentViewController = UIApplication.shared.delegate?.window??.rootViewController else {
27
- return
25
+ DispatchQueue.main.async {
26
+ guard var currentViewController = UIApplication.shared.delegate?.window??.rootViewController else {
27
+ return
28
+ }
29
+
30
+ while let presented = currentViewController.presentedViewController {
31
+ currentViewController = presented
32
+ }
33
+
34
+ TagWorksPopup.sharedInstance.onCMSPopup(onCmsUrl: onCmsUrl,
35
+ cust_id: custId,
36
+ rcmd_area_cd: rcmdAreaCd,
37
+ owner: currentViewController)
38
+
39
+ // Survey 테스트
40
+ // TagWorksPopup.sharedInstance.onCMSPopup(onCmsUrl: "https://dxlab.obzen.com/oncms",
41
+ // cntn_id: "BUZURWbe",
42
+ // cust_id: "C0000000001",
43
+ // rcmd_area_cd: "SURV_AREA_1",
44
+ // owner: currentViewController)
28
45
  }
29
-
30
- while let presented = currentViewController.presentedViewController {
31
- currentViewController = presented
32
- }
33
-
34
-
35
- // TagWorksPopup.sharedInstance.onCMSPopup(onCmsUrl: onCmsUrl,
36
- // cust_id: custId,
37
- // rcmd_area_cd: rcmdAreaCd,
38
- // owner: currentViewController)
39
- // Survey 테스트
40
- TagWorksPopup.sharedInstance.onCMSPopup(onCmsUrl: "https://dxlab.obzen.com/oncms",
41
- cntn_id: "BUZURWbe",
42
- cust_id: "C0000000001",
43
- rcmd_area_cd: "SURV_AREA_1",
44
- owner: currentViewController)
45
- }
46
46
  }
47
+
48
+ // 리소스 참조 테스트 코드
49
+ // @objc func getImageBase64(_ resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) {
50
+ // let bundle = Bundle(for: TagWorks.self)
51
+ // let imageName = "close-bg-cross.png"
52
+ //
53
+ // guard let image = UIImage(named: imageName, in: bundle, compatibleWith: nil) else {
54
+ // reject("no_image", "Image not found", nil)
55
+ // return
56
+ // }
57
+ // if let imageData = image.pngData() {
58
+ // let base64String = imageData.base64EncodedString()
59
+ // resolve(base64String)
60
+ // } else {
61
+ // reject("encoding_error", "Failed to encode image", nil)
62
+ // }
63
+ // }
47
64
  }
@@ -12,4 +12,6 @@
12
12
 
13
13
  RCT_EXTERN_METHOD(onCMSPopup:(NSString *)onCmsUrl custId:(NSString *)custId rcmdAreaCd:(NSString *)rcmdAreaCd);
14
14
 
15
+ // Test용
16
+ //RCT_EXTERN_METHOD(getImageBase64:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject);
15
17
  @end
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.attachBanner = attachBanner;
7
+ var _reactNative = require("react-native");
8
+ // OnCmsBannerCommands.js
9
+
10
+ const VIEW_NAME = 'OnCmsBannerView';
11
+ function attachBanner(ref, params) {
12
+ console.log('🟡 attachBannerRef:', ref);
13
+ console.log('🟡 attachBannerParams:', params);
14
+ const tag = (0, _reactNative.findNodeHandle)(ref.current);
15
+ if (!tag) return;
16
+
17
+ // 'VIEW_NAME'에 해당하는 네이티브 ViewManager 정보 조회
18
+ const config = _reactNative.UIManager.getViewManagerConfig(VIEW_NAME);
19
+ // console.log('🟡 ViewManagerConfig:', config);
20
+ // const commandId = config.Commands.setOnCmsBannerParam;
21
+ const commandId = config?.Constants?.Commands?.setOnCmsBannerParam;
22
+ if (commandId === undefined) {
23
+ console.error('❌ attach command not found', config);
24
+ return;
25
+ }
26
+ console.log('🟡 dispatchViewManagerCommand tag:', tag);
27
+ console.log('🟡 dispatchViewManagerCommand commandId:', commandId);
28
+ _reactNative.UIManager.dispatchViewManagerCommand(tag, commandId, [params.url, params.custId, params.areaCd, params.defaultImage]);
29
+ }
30
+ //# sourceMappingURL=OnCmsBannerCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","VIEW_NAME","attachBanner","ref","params","console","log","tag","findNodeHandle","current","config","UIManager","getViewManagerConfig","commandId","Constants","Commands","setOnCmsBannerParam","undefined","error","dispatchViewManagerCommand","url","custId","areaCd","defaultImage"],"sourceRoot":"../../src","sources":["OnCmsBannerCommands.js"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AADA;;AAGA,MAAMC,SAAS,GAAG,iBAAiB;AAE5B,SAASC,YAAYA,CAACC,GAAG,EAAEC,MAAM,EAAE;EACtCC,OAAO,CAACC,GAAG,CAAC,qBAAqB,EAAEH,GAAG,CAAC;EACvCE,OAAO,CAACC,GAAG,CAAC,wBAAwB,EAAEF,MAAM,CAAC;EAC7C,MAAMG,GAAG,GAAG,IAAAC,2BAAc,EAACL,GAAG,CAACM,OAAO,CAAC;EACvC,IAAI,CAACF,GAAG,EAAE;;EAEV;EACA,MAAMG,MAAM,GAAGC,sBAAS,CAACC,oBAAoB,CAACX,SAAS,CAAC;EAC5D;EACI;EACA,MAAMY,SAAS,GAAGH,MAAM,EAAEI,SAAS,EAAEC,QAAQ,EAAEC,mBAAmB;EAElE,IAAIH,SAAS,KAAKI,SAAS,EAAE;IACzBZ,OAAO,CAACa,KAAK,CAAC,4BAA4B,EAAER,MAAM,CAAC;IACnD;EACJ;EAEAL,OAAO,CAACC,GAAG,CAAC,oCAAoC,EAAEC,GAAG,CAAC;EACtDF,OAAO,CAACC,GAAG,CAAC,0CAA0C,EAAEO,SAAS,CAAC;EAClEF,sBAAS,CAACQ,0BAA0B,CAACZ,GAAG,EAAEM,SAAS,EAAE,CACjDT,MAAM,CAACgB,GAAG,EACVhB,MAAM,CAACiB,MAAM,EACbjB,MAAM,CAACkB,MAAM,EACblB,MAAM,CAACmB,YAAY,CACtB,CAAC;AACN","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactNative = require("react-native");
8
+ const OnCmsBannerView = (0, _reactNative.requireNativeComponent)('OnCmsBannerView');
9
+ var _default = exports.default = OnCmsBannerView;
10
+ //# sourceMappingURL=RegisterOnCmsBannerView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","OnCmsBannerView","requireNativeComponent","_default","exports","default"],"sourceRoot":"../../src","sources":["RegisterOnCmsBannerView.js"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,MAAMC,eAAe,GAAG,IAAAC,mCAAsB,EAAC,iBAAiB,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEnDJ,eAAe","ignoreList":[]}