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.
- package/LICENSE +3 -1
- package/README.md +6 -1049
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/tagworkssdkv1/DataBundleModule.kt +2 -27
- package/android/src/main/java/com/tagworkssdkv1/OnCmsBannerView.kt +68 -0
- package/android/src/main/java/com/tagworkssdkv1/OnCmsBannerViewManager.kt +23 -52
- package/android/src/main/java/com/tagworkssdkv1/TagWorksDeeplinkModule.kt +2 -2
- package/android/src/main/java/com/tagworkssdkv1/TagWorksModule.kt +47 -35
- package/android/src/main/java/com/tagworkssdkv1/TagworksSdkV1Package.kt +1 -1
- package/ios/DataBundleModule.swift +8 -8
- package/ios/OnCMSBannerViewManagerBridge.m +3 -2
- package/ios/OnCmsBannerViewManager.swift +145 -43
- package/ios/TagWorksDeeplinkModule.swift +1 -1
- package/ios/TagWorksDeeplinkModuleBridge.m +0 -34
- package/ios/TagWorksModule.swift +58 -45
- package/ios/TagWorksModuleBridge.m +14 -10
- package/ios/TagWorksPopupModule.swift +41 -24
- package/ios/TagWorksPopupModuleBridge.m +2 -0
- package/lib/commonjs/OnCmsBannerCommands.js +30 -0
- package/lib/commonjs/OnCmsBannerCommands.js.map +1 -0
- package/lib/commonjs/RegisterOnCmsBannerView.js +10 -0
- package/lib/commonjs/RegisterOnCmsBannerView.js.map +1 -0
- package/lib/commonjs/autoTrackers/ReactNavigationPageTracker.js +135 -0
- package/lib/commonjs/autoTrackers/ReactNavigationPageTracker.js.map +1 -0
- package/lib/commonjs/index.js +21 -5
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/OnCmsBannerCommands.js +25 -0
- package/lib/module/OnCmsBannerCommands.js.map +1 -0
- package/lib/module/RegisterOnCmsBannerView.js +6 -0
- package/lib/module/RegisterOnCmsBannerView.js.map +1 -0
- package/lib/module/autoTrackers/ReactNavigationPageTracker.js +131 -0
- package/lib/module/autoTrackers/ReactNavigationPageTracker.js.map +1 -0
- package/lib/module/index.js +8 -5
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/commonjs/android/build/intermediates/assets/debugAndroidTest/mergeDebugAndroidTestAssets/fingerprint_lib.d.ts +19 -0
- package/lib/typescript/commonjs/android/build/intermediates/assets/debugAndroidTest/mergeDebugAndroidTestAssets/fingerprint_lib.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/OnCmsBannerCommands.d.ts +2 -0
- package/lib/typescript/commonjs/src/OnCmsBannerCommands.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/RegisterOnCmsBannerView.d.ts +3 -0
- package/lib/typescript/commonjs/src/RegisterOnCmsBannerView.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/autoTrackers/ReactNavigationPageTracker.d.ts +12 -0
- package/lib/typescript/commonjs/src/autoTrackers/ReactNavigationPageTracker.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +3 -2
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/module/android/build/intermediates/assets/debugAndroidTest/mergeDebugAndroidTestAssets/fingerprint_lib.d.ts +19 -0
- package/lib/typescript/module/android/build/intermediates/assets/debugAndroidTest/mergeDebugAndroidTestAssets/fingerprint_lib.d.ts.map +1 -0
- package/lib/typescript/module/src/OnCmsBannerCommands.d.ts +2 -0
- package/lib/typescript/module/src/OnCmsBannerCommands.d.ts.map +1 -0
- package/lib/typescript/module/src/RegisterOnCmsBannerView.d.ts +3 -0
- package/lib/typescript/module/src/RegisterOnCmsBannerView.d.ts.map +1 -0
- package/lib/typescript/module/src/autoTrackers/ReactNavigationPageTracker.d.ts +12 -0
- package/lib/typescript/module/src/autoTrackers/ReactNavigationPageTracker.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +3 -2
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/package.json +22 -4
- package/src/OnCmsBannerCommands.js +31 -0
- package/src/RegisterOnCmsBannerView.js +5 -0
- package/src/autoTrackers/ReactNavigationPageTracker.js +137 -0
- package/src/index.js +23 -6
- package/tagworks-sdk-v1-react.podspec +3 -2
- package/android/src/main/java/com/tagworkssdkv1/TagWorks.kt +0 -37
- 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
|
|
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
|
-
|
|
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
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
99
|
+
// Android: setOnCmsUrl
|
|
100
|
+
@objc func setOnCmsUrl(_ url: String) {
|
|
101
|
+
self.onCmsUrlProp = url
|
|
102
|
+
checkAndAttach()
|
|
73
103
|
}
|
|
74
104
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
105
|
+
// Android: setCustId
|
|
106
|
+
@objc func setCust_id(_ id: String?) {
|
|
107
|
+
self.custIdProp = id
|
|
108
|
+
checkAndAttach()
|
|
80
109
|
}
|
|
81
110
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
111
|
+
// Android: setRcmdAreaCd
|
|
112
|
+
@objc func setRcmd_area_cd(_ code: String) {
|
|
113
|
+
self.rcmdAreaCdProp = code
|
|
114
|
+
checkAndAttach()
|
|
87
115
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
-
|
|
125
|
+
attachBanner()
|
|
99
126
|
shouldAttachBanner = true
|
|
100
127
|
setNeedsLayout() // layoutSubviews 호출 유도
|
|
101
128
|
}
|
|
102
129
|
}
|
|
103
130
|
|
|
131
|
+
|
|
104
132
|
private func attachBanner() {
|
|
105
|
-
|
|
106
|
-
|
|
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
|
-
|
|
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
|
|
|
@@ -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
|
package/ios/TagWorksModule.swift
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import Foundation
|
|
9
9
|
import React
|
|
10
|
-
import
|
|
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
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
|
123
|
-
|
|
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 =
|
|
376
|
-
var eventDimensions: [
|
|
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(
|
|
418
|
+
eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(key: key, value: value))
|
|
406
419
|
} else {
|
|
407
420
|
if Int(key) != nil {
|
|
408
|
-
eventDimensions.append(
|
|
421
|
+
eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(index: Int(key)!, value: value))
|
|
409
422
|
} else {
|
|
410
|
-
eventDimensions.append(
|
|
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(
|
|
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(
|
|
436
|
+
eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(index: Int(key)!, numValue: value as! Double))
|
|
424
437
|
} else {
|
|
425
|
-
eventDimensions.append(
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
}
|
|
@@ -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":[]}
|