tagworks-sdk-v1-react 1.1.21 → 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 (47) 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/OnCmsBannerViewManager.kt +0 -1
  6. package/android/src/main/java/com/tagworkssdkv1/TagWorksDeeplinkModule.kt +2 -2
  7. package/android/src/main/java/com/tagworkssdkv1/TagWorksModule.kt +47 -35
  8. package/android/src/main/java/com/tagworkssdkv1/TagworksSdkV1Package.kt +1 -1
  9. package/ios/DataBundleModule.swift +8 -8
  10. package/ios/OnCmsBannerViewManager.swift +1 -1
  11. package/ios/TagWorksDeeplinkModule.swift +1 -1
  12. package/ios/TagWorksDeeplinkModuleBridge.m +0 -34
  13. package/ios/TagWorksModule.swift +48 -12
  14. package/ios/TagWorksModuleBridge.m +5 -1
  15. package/ios/TagWorksPopupModule.swift +41 -24
  16. package/ios/TagWorksPopupModuleBridge.m +2 -0
  17. package/lib/commonjs/RegisterOnCmsBannerView.js +10 -0
  18. package/lib/commonjs/RegisterOnCmsBannerView.js.map +1 -0
  19. package/lib/commonjs/autoTrackers/ReactNavigationPageTracker.js +135 -0
  20. package/lib/commonjs/autoTrackers/ReactNavigationPageTracker.js.map +1 -0
  21. package/lib/commonjs/index.js +20 -6
  22. package/lib/commonjs/index.js.map +1 -1
  23. package/lib/module/RegisterOnCmsBannerView.js +6 -0
  24. package/lib/module/RegisterOnCmsBannerView.js.map +1 -0
  25. package/lib/module/autoTrackers/ReactNavigationPageTracker.js +131 -0
  26. package/lib/module/autoTrackers/ReactNavigationPageTracker.js.map +1 -0
  27. package/lib/module/index.js +7 -5
  28. package/lib/module/index.js.map +1 -1
  29. package/lib/typescript/commonjs/src/RegisterOnCmsBannerView.d.ts +3 -0
  30. package/lib/typescript/commonjs/src/RegisterOnCmsBannerView.d.ts.map +1 -0
  31. package/lib/typescript/commonjs/src/autoTrackers/ReactNavigationPageTracker.d.ts +12 -0
  32. package/lib/typescript/commonjs/src/autoTrackers/ReactNavigationPageTracker.d.ts.map +1 -0
  33. package/lib/typescript/commonjs/src/index.d.ts +3 -2
  34. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  35. package/lib/typescript/module/src/RegisterOnCmsBannerView.d.ts +3 -0
  36. package/lib/typescript/module/src/RegisterOnCmsBannerView.d.ts.map +1 -0
  37. package/lib/typescript/module/src/autoTrackers/ReactNavigationPageTracker.d.ts +12 -0
  38. package/lib/typescript/module/src/autoTrackers/ReactNavigationPageTracker.d.ts.map +1 -0
  39. package/lib/typescript/module/src/index.d.ts +3 -2
  40. package/lib/typescript/module/src/index.d.ts.map +1 -1
  41. package/package.json +24 -4
  42. package/src/RegisterOnCmsBannerView.js +5 -0
  43. package/src/autoTrackers/ReactNavigationPageTracker.js +137 -0
  44. package/src/index.js +22 -6
  45. package/tagworks-sdk-v1-react.podspec +3 -2
  46. package/android/src/main/java/com/tagworkssdkv1/TagWorks.kt +0 -37
  47. package/android/src/main/java/com/tagworkssdkv1/TagworksSdkV1Module.kt +0 -25
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TagWorksNavigationContainer = TagWorksNavigationContainer;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var React = _react;
9
+ var _native = _interopRequireWildcard(require("@react-navigation/native"));
10
+ var ReactNavigation = _native;
11
+ var _reactNative = require("react-native");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
+ // autoTrackers/reactNavigationPageTracker.js
15
+ // React Navigation 전용
16
+
17
+ // 로그 전송 함수
18
+ const logEventPageView = (currentScreen, previousScreen, indexPath) => {
19
+ const {
20
+ TagWorksModule,
21
+ DataBundleModule,
22
+ StandardEventModule
23
+ } = _reactNative.NativeModules;
24
+ if (currentScreen) {
25
+ console.log(`[TagWorks SDK] 화면 전환 완료: ${previousScreen || '앱 시작'} -> ${currentScreen}, indexPath: ${indexPath}`);
26
+
27
+ // TODO: 여기에 SDK의 실제 로그 전송 API 호출 로직을 구현합니다.
28
+ DataBundleModule.initialize();
29
+ DataBundleModule.putString(DataBundleModule.EVENT_TAG_NAME, StandardEventModule.PAGE_VIEW);
30
+ DataBundleModule.putString(DataBundleModule.EVENT_TAG_PARAM_TITLE, currentScreen);
31
+ DataBundleModule.putString(DataBundleModule.EVENT_TAG_PARAM_PAGE_PATH, indexPath);
32
+ DataBundleModule.getDataBundle(bundleString => {
33
+ console.log('Received Dictionary String:', bundleString);
34
+ TagWorksModule.logEvent(TagWorksModule.EVENT_TYPE_PAGE, bundleString, result => {
35
+ console.log(result);
36
+ });
37
+ });
38
+ }
39
+ };
40
+ function buildPathFromStack(state) {
41
+ const segments = state.routes.map(r => r.name);
42
+ return segments.join('/');
43
+ }
44
+
45
+ /**
46
+ * React Navigation 기반 앱의 화면 전환 로그를 자동으로 추적하는 래퍼 컴포넌트입니다.
47
+ * * @param {object} props
48
+ * @param {React.ReactNode} props.children - NavigationContainer 내부의 모든 내비게이터
49
+ * @param {(state: NavigationState | undefined) => void} [props.onStateChange] - 앱 개발자가 정의한 onStateChange 핸들러 (체인 연결)
50
+ */
51
+ function TagWorksNavigationContainer({
52
+ children,
53
+ onReady,
54
+ onStateChange,
55
+ // <-- onReady, onStateChange prop 추가
56
+ excludedScreenNames = [],
57
+ // ✨ 기본값으로 빈 배열을 설정하고 prop으로 받습니다.
58
+ ...restProps // ✨ 나머지 모든 prop을 받습니다.
59
+ }) {
60
+ // 이전 화면 이름을 저장하기 위한 Ref
61
+ const routeNameRef = (0, _react.useRef)(null);
62
+ // NavigationContainer의 Ref (navigation 객체 접근용)
63
+ const navigationRef = (0, _react.useRef)(null);
64
+
65
+ // onReady 핸들러를 체인으로 연결하는 함수
66
+ const chainedHandleReady = (0, _react.useCallback)(() => {
67
+ // 1. SDK의 내부 로직 실행
68
+ if (navigationRef.current) {
69
+ const initialRoute = navigationRef.current.getCurrentRoute();
70
+ routeNameRef.current = initialRoute ? initialRoute.name : null;
71
+ // SDK의 로그 전송 로직 실행
72
+ // 초기 화면이 제외 목록에 포함되지 않는 경우에만 로그 전송
73
+ if (routeNameRef.current && !excludedScreenNames.includes(routeNameRef.current)) {
74
+ // ✨ 제외 로직 추가
75
+ logEventPageView(routeNameRef.current, "", routeNameRef.current);
76
+ }
77
+ console.log(`[TagWorks SDK] NavigationContainer 준비 완료. 초기 화면: ${routeNameRef.current}`);
78
+ }
79
+
80
+ // 2. 외부에서 전달된 onReady prop이 있다면 실행
81
+ if (onReady) {
82
+ onReady();
83
+ }
84
+ }, [onReady]); // onReady prop이 변경될 때마다 함수가 재생성됩니다.
85
+
86
+ // SDK의 로그 로직과 외부 prop을 연결하는 체인 함수
87
+ const chainedHandleStateChange = (0, _react.useCallback)(state => {
88
+ // 1. **널 체크:** navigationRef.current가 설정되지 않았으면 (초기화 전) 로직 중단
89
+ if (!navigationRef.current) {
90
+ if (onStateChange) {
91
+ onStateChange(state); // 외부 함수는 호출
92
+ }
93
+ return;
94
+ }
95
+
96
+ // 2. 현재 활성화된 화면 정보 가져오기 (React Navigation 내부 함수 활용)
97
+ const currentRoute = navigationRef.current.getCurrentRoute();
98
+ const currentRouteName = currentRoute ? currentRoute.name : null;
99
+ const previousRouteName = routeNameRef.current;
100
+
101
+ // 3. **로그 중복 방지 및 화면 전환 확인**
102
+ // 이전 화면 이름과 현재 화면 이름이 다를 때만 로그 전송
103
+ if (currentRouteName && previousRouteName !== currentRouteName) {
104
+ // ✨ 핵심: 현재 화면 이름이 제외 대상 목록에 포함되는지 확인
105
+ const shouldExclude = excludedScreenNames.includes(currentRouteName);
106
+ if (!shouldExclude) {
107
+ // 제외 대상이 아닐 경우에만 로그 전송
108
+ // SDK의 로그 전송 로직 실행
109
+ logEventPageView(currentRouteName, previousRouteName, buildPathFromStack(state));
110
+ console.log(`[TagWorks SDK] 로그 전송: ${previousRouteName} -> ${currentRouteName}`);
111
+ } else {
112
+ console.log(`[TagWorks SDK] 로그 제외 (Excluded Screen): ${currentRouteName}`);
113
+ }
114
+
115
+ // 현재 화면 이름을 저장하여 다음 전환 시 이전 화면으로 사용
116
+ routeNameRef.current = currentRouteName;
117
+ }
118
+
119
+ // 4. **체이닝:** 외부에서 전달된 onStateChange prop이 있다면 실행
120
+ if (onStateChange) {
121
+ onStateChange(state);
122
+ }
123
+ }, [onStateChange, excludedScreenNames]); // onStateChange prop이 변경될 때마다 useCallback이 최신 함수를 참조하도록 합니다.
124
+ // excludedScreenNames도 의존성 배열에 추가합니다.
125
+
126
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_native.NavigationContainer, {
127
+ ref: navigationRef,
128
+ onReady: chainedHandleReady // <-- 체인된 함수를 전달합니다.
129
+ ,
130
+ onStateChange: chainedHandleStateChange,
131
+ ...restProps,
132
+ children: children
133
+ });
134
+ }
135
+ //# sourceMappingURL=ReactNavigationPageTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","React","_native","ReactNavigation","_reactNative","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","logEventPageView","currentScreen","previousScreen","indexPath","TagWorksModule","DataBundleModule","StandardEventModule","NativeModules","console","log","initialize","putString","EVENT_TAG_NAME","PAGE_VIEW","EVENT_TAG_PARAM_TITLE","EVENT_TAG_PARAM_PAGE_PATH","getDataBundle","bundleString","logEvent","EVENT_TYPE_PAGE","result","buildPathFromStack","state","segments","routes","map","name","join","TagWorksNavigationContainer","children","onReady","onStateChange","excludedScreenNames","restProps","routeNameRef","useRef","navigationRef","chainedHandleReady","useCallback","current","initialRoute","getCurrentRoute","includes","chainedHandleStateChange","currentRoute","currentRouteName","previousRouteName","shouldExclude","jsx","NavigationContainer","ref"],"sourceRoot":"../../../src","sources":["autoTrackers/ReactNavigationPageTracker.js"],"mappings":"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","ignoreList":[]}
@@ -3,20 +3,34 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.StandardEventModule = exports.OnCmsBannerView = exports.DataBundleModule = void 0;
6
+ exports.DataBundleModule = void 0;
7
+ Object.defineProperty(exports, "OnCmsBannerView", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _RegisterOnCmsBannerView.default;
11
+ }
12
+ });
13
+ exports.StandardEventModule = void 0;
7
14
  Object.defineProperty(exports, "TagWorksDeeplink", {
8
15
  enumerable: true,
9
16
  get: function () {
10
17
  return _TagWorksDeeplink.default;
11
18
  }
12
19
  });
13
- exports.TagWorksPopupModule = exports.TagWorksModule = exports.TagWorksDeeplinkModule = void 0;
20
+ exports.TagWorksModule = exports.TagWorksDeeplinkModule = void 0;
21
+ Object.defineProperty(exports, "TagWorksNavigationContainer", {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _ReactNavigationPageTracker.TagWorksNavigationContainer;
25
+ }
26
+ });
27
+ exports.TagWorksPopupModule = void 0;
14
28
  var _reactNative = require("react-native");
15
29
  var _TagWorksDeeplink = _interopRequireDefault(require("./TagWorksDeeplink.js"));
30
+ var _RegisterOnCmsBannerView = _interopRequireDefault(require("./RegisterOnCmsBannerView.js"));
31
+ var _ReactNavigationPageTracker = require("./autoTrackers/ReactNavigationPageTracker.js");
16
32
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
- // import { NativeModules, Platform } from 'react-native';
18
-
19
- const OnCmsBannerView = exports.OnCmsBannerView = (0, _reactNative.requireNativeComponent)('OnCmsBannerView');
33
+ // NativeModules
20
34
  const {
21
35
  TagWorksModule,
22
36
  DataBundleModule,
@@ -28,7 +42,7 @@ const {
28
42
  // const LINKING_ERROR =
29
43
  // `The package 'tagworks-sdk-v1' doesn't seem to be linked. Make sure: \n\n` +
30
44
  // Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
31
- // '- You rebuilt the app after installing the package\n' +
45
+ // '- You rebuilt the app after installing the package\n' +33
32
46
  // '- You are not using Expo Go\n';
33
47
 
34
48
  // const TagworksSdkV1 = NativeModules.TagworksSdkV1
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_TagWorksDeeplink","_interopRequireDefault","e","__esModule","default","OnCmsBannerView","exports","requireNativeComponent","TagWorksModule","DataBundleModule","StandardEventModule","TagWorksPopupModule","TagWorksDeeplinkModule","NativeModules"],"sourceRoot":"../../src","sources":["index.js"],"mappings":";;;;;;;;;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAkD,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAFlD;;AAIA,MAAMG,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,IAAAE,mCAAsB,EAAC,iBAAiB,CAAC;AAEjE,MAAM;EAAEC,cAAc;EAAEC,gBAAgB;EAAEC,mBAAmB;EAAEC,mBAAmB;EAAEC;AAAuB,CAAC,GAAGC,0BAAa;;AAM5H;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAAP,OAAA,CAAAM,sBAAA,GAAAA,sBAAA;AAAAN,OAAA,CAAAK,mBAAA,GAAAA,mBAAA;AAAAL,OAAA,CAAAI,mBAAA,GAAAA,mBAAA;AAAAJ,OAAA,CAAAG,gBAAA,GAAAA,gBAAA;AAAAH,OAAA,CAAAE,cAAA,GAAAA,cAAA","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_TagWorksDeeplink","_interopRequireDefault","_RegisterOnCmsBannerView","_ReactNavigationPageTracker","e","__esModule","default","TagWorksModule","DataBundleModule","StandardEventModule","TagWorksPopupModule","TagWorksDeeplinkModule","NativeModules","exports"],"sourceRoot":"../../src","sources":["index.js"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,wBAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,2BAAA,GAAAJ,OAAA;AAAwF,SAAAE,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAExF;AACA,MAAM;EACJG,cAAc;EACdC,gBAAgB;EAChBC,mBAAmB;EACnBC,mBAAmB;EACnBC;AACF,CAAC,GAAGC,0BAAa;;AAgBjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAAC,OAAA,CAAAF,sBAAA,GAAAA,sBAAA;AAAAE,OAAA,CAAAH,mBAAA,GAAAA,mBAAA;AAAAG,OAAA,CAAAJ,mBAAA,GAAAA,mBAAA;AAAAI,OAAA,CAAAL,gBAAA,GAAAA,gBAAA;AAAAK,OAAA,CAAAN,cAAA,GAAAA,cAAA","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ import { requireNativeComponent } from 'react-native';
4
+ const OnCmsBannerView = requireNativeComponent('OnCmsBannerView');
5
+ export default OnCmsBannerView;
6
+ //# sourceMappingURL=RegisterOnCmsBannerView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["requireNativeComponent","OnCmsBannerView"],"sourceRoot":"../../src","sources":["RegisterOnCmsBannerView.js"],"mappings":";;AAAA,SAASA,sBAAsB,QAAQ,cAAc;AAErD,MAAMC,eAAe,GAAGD,sBAAsB,CAAC,iBAAiB,CAAC;AAEjE,eAAeC,eAAe","ignoreList":[]}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+
3
+ // autoTrackers/reactNavigationPageTracker.js
4
+ // React Navigation 전용
5
+
6
+ import * as React from 'react';
7
+ import { useRef, useCallback } from 'react';
8
+ import * as ReactNavigation from '@react-navigation/native';
9
+ import { NavigationContainer } from '@react-navigation/native';
10
+ import { NativeModules } from 'react-native';
11
+
12
+ // 로그 전송 함수
13
+ import { jsx as _jsx } from "react/jsx-runtime";
14
+ const logEventPageView = (currentScreen, previousScreen, indexPath) => {
15
+ const {
16
+ TagWorksModule,
17
+ DataBundleModule,
18
+ StandardEventModule
19
+ } = NativeModules;
20
+ if (currentScreen) {
21
+ console.log(`[TagWorks SDK] 화면 전환 완료: ${previousScreen || '앱 시작'} -> ${currentScreen}, indexPath: ${indexPath}`);
22
+
23
+ // TODO: 여기에 SDK의 실제 로그 전송 API 호출 로직을 구현합니다.
24
+ DataBundleModule.initialize();
25
+ DataBundleModule.putString(DataBundleModule.EVENT_TAG_NAME, StandardEventModule.PAGE_VIEW);
26
+ DataBundleModule.putString(DataBundleModule.EVENT_TAG_PARAM_TITLE, currentScreen);
27
+ DataBundleModule.putString(DataBundleModule.EVENT_TAG_PARAM_PAGE_PATH, indexPath);
28
+ DataBundleModule.getDataBundle(bundleString => {
29
+ console.log('Received Dictionary String:', bundleString);
30
+ TagWorksModule.logEvent(TagWorksModule.EVENT_TYPE_PAGE, bundleString, result => {
31
+ console.log(result);
32
+ });
33
+ });
34
+ }
35
+ };
36
+ function buildPathFromStack(state) {
37
+ const segments = state.routes.map(r => r.name);
38
+ return segments.join('/');
39
+ }
40
+
41
+ /**
42
+ * React Navigation 기반 앱의 화면 전환 로그를 자동으로 추적하는 래퍼 컴포넌트입니다.
43
+ * * @param {object} props
44
+ * @param {React.ReactNode} props.children - NavigationContainer 내부의 모든 내비게이터
45
+ * @param {(state: NavigationState | undefined) => void} [props.onStateChange] - 앱 개발자가 정의한 onStateChange 핸들러 (체인 연결)
46
+ */
47
+ export function TagWorksNavigationContainer({
48
+ children,
49
+ onReady,
50
+ onStateChange,
51
+ // <-- onReady, onStateChange prop 추가
52
+ excludedScreenNames = [],
53
+ // ✨ 기본값으로 빈 배열을 설정하고 prop으로 받습니다.
54
+ ...restProps // ✨ 나머지 모든 prop을 받습니다.
55
+ }) {
56
+ // 이전 화면 이름을 저장하기 위한 Ref
57
+ const routeNameRef = useRef(null);
58
+ // NavigationContainer의 Ref (navigation 객체 접근용)
59
+ const navigationRef = useRef(null);
60
+
61
+ // onReady 핸들러를 체인으로 연결하는 함수
62
+ const chainedHandleReady = useCallback(() => {
63
+ // 1. SDK의 내부 로직 실행
64
+ if (navigationRef.current) {
65
+ const initialRoute = navigationRef.current.getCurrentRoute();
66
+ routeNameRef.current = initialRoute ? initialRoute.name : null;
67
+ // SDK의 로그 전송 로직 실행
68
+ // 초기 화면이 제외 목록에 포함되지 않는 경우에만 로그 전송
69
+ if (routeNameRef.current && !excludedScreenNames.includes(routeNameRef.current)) {
70
+ // ✨ 제외 로직 추가
71
+ logEventPageView(routeNameRef.current, "", routeNameRef.current);
72
+ }
73
+ console.log(`[TagWorks SDK] NavigationContainer 준비 완료. 초기 화면: ${routeNameRef.current}`);
74
+ }
75
+
76
+ // 2. 외부에서 전달된 onReady prop이 있다면 실행
77
+ if (onReady) {
78
+ onReady();
79
+ }
80
+ }, [onReady]); // onReady prop이 변경될 때마다 함수가 재생성됩니다.
81
+
82
+ // SDK의 로그 로직과 외부 prop을 연결하는 체인 함수
83
+ const chainedHandleStateChange = useCallback(state => {
84
+ // 1. **널 체크:** navigationRef.current가 설정되지 않았으면 (초기화 전) 로직 중단
85
+ if (!navigationRef.current) {
86
+ if (onStateChange) {
87
+ onStateChange(state); // 외부 함수는 호출
88
+ }
89
+ return;
90
+ }
91
+
92
+ // 2. 현재 활성화된 화면 정보 가져오기 (React Navigation 내부 함수 활용)
93
+ const currentRoute = navigationRef.current.getCurrentRoute();
94
+ const currentRouteName = currentRoute ? currentRoute.name : null;
95
+ const previousRouteName = routeNameRef.current;
96
+
97
+ // 3. **로그 중복 방지 및 화면 전환 확인**
98
+ // 이전 화면 이름과 현재 화면 이름이 다를 때만 로그 전송
99
+ if (currentRouteName && previousRouteName !== currentRouteName) {
100
+ // ✨ 핵심: 현재 화면 이름이 제외 대상 목록에 포함되는지 확인
101
+ const shouldExclude = excludedScreenNames.includes(currentRouteName);
102
+ if (!shouldExclude) {
103
+ // 제외 대상이 아닐 경우에만 로그 전송
104
+ // SDK의 로그 전송 로직 실행
105
+ logEventPageView(currentRouteName, previousRouteName, buildPathFromStack(state));
106
+ console.log(`[TagWorks SDK] 로그 전송: ${previousRouteName} -> ${currentRouteName}`);
107
+ } else {
108
+ console.log(`[TagWorks SDK] 로그 제외 (Excluded Screen): ${currentRouteName}`);
109
+ }
110
+
111
+ // 현재 화면 이름을 저장하여 다음 전환 시 이전 화면으로 사용
112
+ routeNameRef.current = currentRouteName;
113
+ }
114
+
115
+ // 4. **체이닝:** 외부에서 전달된 onStateChange prop이 있다면 실행
116
+ if (onStateChange) {
117
+ onStateChange(state);
118
+ }
119
+ }, [onStateChange, excludedScreenNames]); // onStateChange prop이 변경될 때마다 useCallback이 최신 함수를 참조하도록 합니다.
120
+ // excludedScreenNames도 의존성 배열에 추가합니다.
121
+
122
+ return /*#__PURE__*/_jsx(NavigationContainer, {
123
+ ref: navigationRef,
124
+ onReady: chainedHandleReady // <-- 체인된 함수를 전달합니다.
125
+ ,
126
+ onStateChange: chainedHandleStateChange,
127
+ ...restProps,
128
+ children: children
129
+ });
130
+ }
131
+ //# sourceMappingURL=ReactNavigationPageTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useRef","useCallback","ReactNavigation","NavigationContainer","NativeModules","jsx","_jsx","logEventPageView","currentScreen","previousScreen","indexPath","TagWorksModule","DataBundleModule","StandardEventModule","console","log","initialize","putString","EVENT_TAG_NAME","PAGE_VIEW","EVENT_TAG_PARAM_TITLE","EVENT_TAG_PARAM_PAGE_PATH","getDataBundle","bundleString","logEvent","EVENT_TYPE_PAGE","result","buildPathFromStack","state","segments","routes","map","r","name","join","TagWorksNavigationContainer","children","onReady","onStateChange","excludedScreenNames","restProps","routeNameRef","navigationRef","chainedHandleReady","current","initialRoute","getCurrentRoute","includes","chainedHandleStateChange","currentRoute","currentRouteName","previousRouteName","shouldExclude","ref"],"sourceRoot":"../../../src","sources":["autoTrackers/ReactNavigationPageTracker.js"],"mappings":"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","ignoreList":[]}
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
 
3
- // import { NativeModules, Platform } from 'react-native';
4
- import { NativeModules, requireNativeComponent } from 'react-native';
3
+ import { NativeModules } from 'react-native';
5
4
  import TagWorksDeeplink from "./TagWorksDeeplink.js";
6
- const OnCmsBannerView = requireNativeComponent('OnCmsBannerView');
5
+ import OnCmsBannerView from "./RegisterOnCmsBannerView.js";
6
+ import { TagWorksNavigationContainer } from "./autoTrackers/ReactNavigationPageTracker.js";
7
+
8
+ // NativeModules
7
9
  const {
8
10
  TagWorksModule,
9
11
  DataBundleModule,
@@ -11,12 +13,12 @@ const {
11
13
  TagWorksPopupModule,
12
14
  TagWorksDeeplinkModule
13
15
  } = NativeModules;
14
- export { TagWorksModule, DataBundleModule, StandardEventModule, TagWorksPopupModule, TagWorksDeeplinkModule, OnCmsBannerView, TagWorksDeeplink };
16
+ export { TagWorksModule, DataBundleModule, StandardEventModule, TagWorksPopupModule, TagWorksDeeplinkModule, TagWorksDeeplink, OnCmsBannerView, TagWorksNavigationContainer };
15
17
 
16
18
  // const LINKING_ERROR =
17
19
  // `The package 'tagworks-sdk-v1' doesn't seem to be linked. Make sure: \n\n` +
18
20
  // Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
19
- // '- You rebuilt the app after installing the package\n' +
21
+ // '- You rebuilt the app after installing the package\n' +33
20
22
  // '- You are not using Expo Go\n';
21
23
 
22
24
  // const TagworksSdkV1 = NativeModules.TagworksSdkV1
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","requireNativeComponent","TagWorksDeeplink","OnCmsBannerView","TagWorksModule","DataBundleModule","StandardEventModule","TagWorksPopupModule","TagWorksDeeplinkModule"],"sourceRoot":"../../src","sources":["index.js"],"mappings":";;AAAA;AACA,SAASA,aAAa,EAAEC,sBAAsB,QAAQ,cAAc;AACpE,OAAOC,gBAAgB,MAAM,uBAAoB;AAEjD,MAAMC,eAAe,GAAGF,sBAAsB,CAAC,iBAAiB,CAAC;AAEjE,MAAM;EAAEG,cAAc;EAAEC,gBAAgB;EAAEC,mBAAmB;EAAEC,mBAAmB;EAAEC;AAAuB,CAAC,GAAGR,aAAa;AAC5H,SAASI,cAAc,EAAEC,gBAAgB,EAAEC,mBAAmB,EAAEC,mBAAmB,EAAEC,sBAAsB,EAAEL,eAAe,EAAED,gBAAgB;;AAK9I;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","TagWorksDeeplink","OnCmsBannerView","TagWorksNavigationContainer","TagWorksModule","DataBundleModule","StandardEventModule","TagWorksPopupModule","TagWorksDeeplinkModule"],"sourceRoot":"../../src","sources":["index.js"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,cAAc;AAC5C,OAAOC,gBAAgB,MAAM,uBAAoB;AACjD,OAAOC,eAAe,MAAM,8BAA2B;AACvD,SAASC,2BAA2B,QAAQ,8CAA2C;;AAEvF;AACA,MAAM;EACJC,cAAc;EACdC,gBAAgB;EAChBC,mBAAmB;EACnBC,mBAAmB;EACnBC;AACF,CAAC,GAAGR,aAAa;AAEjB,SACEI,cAAc,EACdC,gBAAgB,EAChBC,mBAAmB,EACnBC,mBAAmB,EACnBC,sBAAsB,EACtBP,gBAAgB,EAChBC,eAAe,EACfC,2BAA2B;;AAM7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export default OnCmsBannerView;
2
+ declare const OnCmsBannerView: import("react-native").HostComponent<any>;
3
+ //# sourceMappingURL=RegisterOnCmsBannerView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RegisterOnCmsBannerView.d.ts","sourceRoot":"","sources":["../../../../src/RegisterOnCmsBannerView.js"],"names":[],"mappings":";AAEA,yEAAkE"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * React Navigation 기반 앱의 화면 전환 로그를 자동으로 추적하는 래퍼 컴포넌트입니다.
3
+ * * @param {object} props
4
+ * @param {React.ReactNode} props.children - NavigationContainer 내부의 모든 내비게이터
5
+ * @param {(state: NavigationState | undefined) => void} [props.onStateChange] - 앱 개발자가 정의한 onStateChange 핸들러 (체인 연결)
6
+ */
7
+ export function TagWorksNavigationContainer({ children, onReady, onStateChange, excludedScreenNames, ...restProps }: {
8
+ children: React.ReactNode;
9
+ onStateChange?: ((state: NavigationState | undefined) => void) | undefined;
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ import * as React from 'react';
12
+ //# sourceMappingURL=ReactNavigationPageTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReactNavigationPageTracker.d.ts","sourceRoot":"","sources":["../../../../../src/autoTrackers/ReactNavigationPageTracker.js"],"names":[],"mappings":"AA8CA;;;;;GAKG;AACH,qHAHG;IAA+B,QAAQ,EAA/B,KAAK,CAAC,SAAS;IACsC,aAAa,YAA1D,eAAe,GAAG,SAAS,KAAK,IAAI;CACtD,2CAqFA;uBArIsB,OAAO"}
@@ -3,7 +3,8 @@ export const DataBundleModule: any;
3
3
  export const StandardEventModule: any;
4
4
  export const TagWorksPopupModule: any;
5
5
  export const TagWorksDeeplinkModule: any;
6
- export const OnCmsBannerView: import("react-native").HostComponent<any>;
7
6
  import TagWorksDeeplink from './TagWorksDeeplink';
8
- export { TagWorksDeeplink };
7
+ import OnCmsBannerView from './RegisterOnCmsBannerView';
8
+ import { TagWorksNavigationContainer } from './autoTrackers/ReactNavigationPageTracker';
9
+ export { TagWorksDeeplink, OnCmsBannerView, TagWorksNavigationContainer };
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.js"],"names":[],"mappings":";;;;;AAIA,wEAAkE;6BAFrC,oBAAoB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.js"],"names":[],"mappings":";;;;;6BAC6B,oBAAoB;4BACrB,2BAA2B;4CACX,2CAA2C"}
@@ -0,0 +1,3 @@
1
+ export default OnCmsBannerView;
2
+ declare const OnCmsBannerView: import("react-native").HostComponent<any>;
3
+ //# sourceMappingURL=RegisterOnCmsBannerView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RegisterOnCmsBannerView.d.ts","sourceRoot":"","sources":["../../../../src/RegisterOnCmsBannerView.js"],"names":[],"mappings":";AAEA,yEAAkE"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * React Navigation 기반 앱의 화면 전환 로그를 자동으로 추적하는 래퍼 컴포넌트입니다.
3
+ * * @param {object} props
4
+ * @param {React.ReactNode} props.children - NavigationContainer 내부의 모든 내비게이터
5
+ * @param {(state: NavigationState | undefined) => void} [props.onStateChange] - 앱 개발자가 정의한 onStateChange 핸들러 (체인 연결)
6
+ */
7
+ export function TagWorksNavigationContainer({ children, onReady, onStateChange, excludedScreenNames, ...restProps }: {
8
+ children: React.ReactNode;
9
+ onStateChange?: ((state: NavigationState | undefined) => void) | undefined;
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ import * as React from 'react';
12
+ //# sourceMappingURL=ReactNavigationPageTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReactNavigationPageTracker.d.ts","sourceRoot":"","sources":["../../../../../src/autoTrackers/ReactNavigationPageTracker.js"],"names":[],"mappings":"AA8CA;;;;;GAKG;AACH,qHAHG;IAA+B,QAAQ,EAA/B,KAAK,CAAC,SAAS;IACsC,aAAa,YAA1D,eAAe,GAAG,SAAS,KAAK,IAAI;CACtD,2CAqFA;uBArIsB,OAAO"}
@@ -3,7 +3,8 @@ export const DataBundleModule: any;
3
3
  export const StandardEventModule: any;
4
4
  export const TagWorksPopupModule: any;
5
5
  export const TagWorksDeeplinkModule: any;
6
- export const OnCmsBannerView: import("react-native").HostComponent<any>;
7
6
  import TagWorksDeeplink from './TagWorksDeeplink';
8
- export { TagWorksDeeplink };
7
+ import OnCmsBannerView from './RegisterOnCmsBannerView';
8
+ import { TagWorksNavigationContainer } from './autoTrackers/ReactNavigationPageTracker';
9
+ export { TagWorksDeeplink, OnCmsBannerView, TagWorksNavigationContainer };
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.js"],"names":[],"mappings":";;;;;AAIA,wEAAkE;6BAFrC,oBAAoB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.js"],"names":[],"mappings":";;;;;6BAC6B,oBAAoB;4BACrB,2BAA2B;4CACX,2CAA2C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tagworks-sdk-v1-react",
3
- "version": "1.1.21",
3
+ "version": "1.1.22",
4
4
  "description": "TagWorks SDK React Native Library",
5
5
  "source": "./src/index.js",
6
6
  "main": "./lib/commonjs/index.js",
@@ -55,7 +55,7 @@
55
55
  "url": "git+http://192.168.20.44:8443/etc/mobile/sdk/tagworks-sdk-v1-react.git"
56
56
  },
57
57
  "author": "pudaegii <pudaegii@obzen.com> (https://github.com/JongCheol-obzen)",
58
- "license": "MIT",
58
+ "license": "Apache-2.0",
59
59
  "bugs": {
60
60
  "url": "http://192.168.20.44:8443/etc/mobile/sdk/tagworks-sdk-v1-react/issues"
61
61
  },
@@ -75,7 +75,7 @@
75
75
  "eslint-plugin-prettier": "^5.0.1",
76
76
  "jest": "^29.7.0",
77
77
  "prettier": "^3.0.3",
78
- "react": "^18.3.1",
78
+ "react": "18.3.1",
79
79
  "react-native": "^0.76.5",
80
80
  "react-native-builder-bob": "^0.35.2",
81
81
  "release-it": "^17.10.0",
@@ -90,7 +90,27 @@
90
90
  },
91
91
  "peerDependencies": {
92
92
  "react": "*",
93
- "react-native": "*"
93
+ "react-native": "*",
94
+
95
+
96
+ "@react-navigation/native": "*",
97
+ "@react-navigation/native-stack": "*",
98
+ "react-native-screens": "*",
99
+ "react-native-safe-area-context": "*"
100
+ },
101
+ "peerDependenciesMeta": {
102
+ "@react-navigation/native": {
103
+ "optional": true
104
+ },
105
+ "@react-navigation/native-stack": {
106
+ "optional": true
107
+ },
108
+ "react-native-screens": {
109
+ "optional": true
110
+ },
111
+ "react-native-safe-area-context": {
112
+ "optional": true
113
+ }
94
114
  },
95
115
  "workspaces": [
96
116
  "example"
@@ -0,0 +1,5 @@
1
+ import { requireNativeComponent } from 'react-native';
2
+
3
+ const OnCmsBannerView = requireNativeComponent('OnCmsBannerView');
4
+
5
+ export default OnCmsBannerView;