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.
- package/LICENSE +3 -1
- package/README.md +35 -552
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/tagworkssdkv1/DataBundleModule.kt +340 -366
- package/android/src/main/java/com/tagworkssdkv1/OnCmsBannerViewManager.kt +15 -4
- package/android/src/main/java/com/tagworkssdkv1/TagWorksDeeplinkModule.kt +117 -0
- package/android/src/main/java/com/tagworkssdkv1/TagWorksModule.kt +417 -376
- package/android/src/main/java/com/tagworkssdkv1/TagWorksPopupModule.kt +22 -26
- package/android/src/main/java/com/tagworkssdkv1/TagworksSdkV1Package.kt +3 -2
- package/ios/DataBundleModule.swift +8 -8
- package/ios/OnCmsBannerViewManager.swift +6 -5
- package/ios/TagWorksDeeplinkModule.swift +64 -0
- package/ios/TagWorksDeeplinkModuleBridge.m +19 -0
- package/ios/TagWorksModule.swift +113 -27
- package/ios/TagWorksModuleBridge.m +20 -2
- package/ios/TagWorksPopupModule.swift +41 -18
- package/ios/TagWorksPopupModuleBridge.m +2 -0
- package/lib/commonjs/RegisterOnCmsBannerView.js +10 -0
- package/lib/commonjs/RegisterOnCmsBannerView.js.map +1 -0
- package/lib/commonjs/TagWorksDeeplink.js +48 -0
- package/lib/commonjs/TagWorksDeeplink.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 +36 -10
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/RegisterOnCmsBannerView.js +6 -0
- package/lib/module/RegisterOnCmsBannerView.js.map +1 -0
- package/lib/module/TagWorksDeeplink.js +44 -0
- package/lib/module/TagWorksDeeplink.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 +15 -11
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/commonjs/babel.config.d.ts +2 -0
- package/lib/typescript/commonjs/babel.config.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/TagWorksDeeplink.d.ts +23 -0
- package/lib/typescript/commonjs/src/TagWorksDeeplink.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 +9 -3
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/module/babel.config.d.ts +2 -0
- package/lib/typescript/module/babel.config.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/TagWorksDeeplink.d.ts +23 -0
- package/lib/typescript/module/src/TagWorksDeeplink.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 +9 -3
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/package.json +28 -8
- package/src/RegisterOnCmsBannerView.js +5 -0
- package/src/TagWorksDeeplink.js +45 -0
- package/src/autoTrackers/ReactNavigationPageTracker.js +137 -0
- package/src/index.js +48 -0
- package/tagworks-sdk-v1-react.podspec +9 -2
- package/android/src/main/java/com/tagworkssdkv1/TagworksSdkV1Module.kt +0 -25
- package/android/src/main/res/drawable/default_img.png +0 -0
- 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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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(
|
|
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
|
|
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: [
|
|
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(
|
|
80
|
+
self.eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(index: Int(key)!, stringValue: value))
|
|
81
81
|
} else {
|
|
82
|
-
self.eventDimensions.append(
|
|
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(
|
|
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(
|
|
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:
|
|
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:
|
|
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
|
|
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
|
package/ios/TagWorksModule.swift
CHANGED
|
@@ -7,10 +7,13 @@
|
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
332
|
-
var eventDimensions: [
|
|
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(
|
|
441
|
+
eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(key: key, value: value))
|
|
362
442
|
} else {
|
|
363
443
|
if Int(key) != nil {
|
|
364
|
-
eventDimensions.append(
|
|
444
|
+
eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(index: Int(key)!, value: value))
|
|
365
445
|
} else {
|
|
366
|
-
eventDimensions.append(
|
|
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(
|
|
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(
|
|
459
|
+
eventDimensions.append(TagWorks_SDK_iOS_v1.Dimension(index: Int(key)!, numValue: value as! Double))
|
|
380
460
|
} else {
|
|
381
|
-
eventDimensions.append(
|
|
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
|
-
|
|
77
|
+
RCT_EXTERN_METHOD(saveErrorReport:(NSString *)errorType errorMessage:(NSString *)errorMessage)
|
|
61
78
|
|
|
79
|
+
@end
|
|
62
80
|
|