@hayanmind/monetai-react-native 0.4.1-beta.0 → 1.0.0-beta.1

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 (34) hide show
  1. package/android/src/main/java/com/hayanmind/monetaireactnative/MonetaiReactNativeModule.kt +14 -0
  2. package/ios/MonetaiReactNative.mm +3 -4
  3. package/ios/MonetaiReactNative.swift +10 -3
  4. package/lib/commonjs/ApiRequest.js +63 -3
  5. package/lib/commonjs/ApiRequest.js.map +1 -1
  6. package/lib/commonjs/MonetaiSDK.js +57 -0
  7. package/lib/commonjs/MonetaiSDK.js.map +1 -1
  8. package/lib/commonjs/lib.js +2 -2
  9. package/lib/module/ApiRequest.js +59 -2
  10. package/lib/module/ApiRequest.js.map +1 -1
  11. package/lib/module/MonetaiSDK.js +58 -1
  12. package/lib/module/MonetaiSDK.js.map +1 -1
  13. package/lib/module/lib.js +2 -2
  14. package/lib/typescript/commonjs/src/ApiRequest.d.ts +23 -1
  15. package/lib/typescript/commonjs/src/ApiRequest.d.ts.map +1 -1
  16. package/lib/typescript/commonjs/src/MonetaiSDK.d.ts +14 -1
  17. package/lib/typescript/commonjs/src/MonetaiSDK.d.ts.map +1 -1
  18. package/lib/typescript/commonjs/src/index.d.ts +1 -1
  19. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  20. package/lib/typescript/commonjs/src/types.d.ts +11 -0
  21. package/lib/typescript/commonjs/src/types.d.ts.map +1 -1
  22. package/lib/typescript/module/src/ApiRequest.d.ts +23 -1
  23. package/lib/typescript/module/src/ApiRequest.d.ts.map +1 -1
  24. package/lib/typescript/module/src/MonetaiSDK.d.ts +14 -1
  25. package/lib/typescript/module/src/MonetaiSDK.d.ts.map +1 -1
  26. package/lib/typescript/module/src/index.d.ts +1 -1
  27. package/lib/typescript/module/src/index.d.ts.map +1 -1
  28. package/lib/typescript/module/src/types.d.ts +11 -0
  29. package/lib/typescript/module/src/types.d.ts.map +1 -1
  30. package/package.json +1 -1
  31. package/src/ApiRequest.ts +87 -1
  32. package/src/MonetaiSDK.ts +89 -11
  33. package/src/index.tsx +1 -0
  34. package/src/types.ts +13 -0
@@ -412,6 +412,20 @@ class MonetaiReactNativeModule(reactContext: ReactApplicationContext) :
412
412
  }
413
413
  }
414
414
 
415
+ @ReactMethod
416
+ fun getAppVersion(promise: Promise) {
417
+ try {
418
+ val packageInfo = reactApplicationContext.packageManager
419
+ .getPackageInfo(reactApplicationContext.packageName, 0)
420
+ val versionName = packageInfo.versionName
421
+ Log.d(TAG, "getAppVersion: ${versionName ?: "null"}")
422
+ promise.resolve(versionName)
423
+ } catch (e: Exception) {
424
+ Log.e(TAG, "getAppVersion 실패: ${e.message}")
425
+ promise.resolve(null)
426
+ }
427
+ }
428
+
415
429
  companion object {
416
430
  const val NAME = "MonetaiReactNative"
417
431
  }
@@ -2,10 +2,6 @@
2
2
 
3
3
  @interface RCT_EXTERN_MODULE(MonetaiReactNative, NSObject)
4
4
 
5
- RCT_EXTERN_METHOD(multiply:(float)a withB:(float)b
6
- withResolver:(RCTPromiseResolveBlock)resolve
7
- withRejecter:(RCTPromiseRejectBlock)reject)
8
-
9
5
  RCT_EXTERN_METHOD(startObserving:(BOOL)useStoreKit2
10
6
  withResolver:(RCTPromiseResolveBlock)resolve
11
7
  withRejecter:(RCTPromiseRejectBlock)reject)
@@ -30,6 +26,9 @@ RCT_EXTERN_METHOD(sendReceipt:(RCTPromiseResolveBlock)resolve
30
26
  RCT_EXTERN_METHOD(reset:(RCTPromiseResolveBlock)resolve
31
27
  withRejecter:(RCTPromiseRejectBlock)reject)
32
28
 
29
+ RCT_EXTERN_METHOD(getAppVersion:(RCTPromiseResolveBlock)resolve
30
+ withRejecter:(RCTPromiseRejectBlock)reject)
31
+
33
32
  + (BOOL)requiresMainQueueSetup
34
33
  {
35
34
  return NO;
@@ -316,19 +316,26 @@ class MonetaiReactNative: NSObject {
316
316
  kSecClass as String: kSecClassGenericPassword,
317
317
  kSecAttrAccount as String: "MonetaiAppAccountToken"
318
318
  ]
319
-
319
+
320
320
  let sdkKeyQuery: [String: Any] = [
321
321
  kSecClass as String: kSecClassGenericPassword,
322
322
  kSecAttrAccount as String: "MonetaiSdkKey"
323
323
  ]
324
-
324
+
325
325
  SecItemDelete(tokenQuery as CFDictionary)
326
326
  SecItemDelete(sdkKeyQuery as CFDictionary)
327
-
327
+
328
328
  print("[Monetai][Debug] userId와 sdkKey가 초기화되었습니다")
329
329
  resolve(nil)
330
330
  }
331
331
 
332
+ @objc(getAppVersion:withRejecter:)
333
+ func getAppVersion(resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
334
+ let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String
335
+ print("[Monetai][Debug] getAppVersion: \(appVersion ?? "nil")")
336
+ resolve(appVersion)
337
+ }
338
+
332
339
  @objc
333
340
  static func requiresMainQueueSetup() -> Bool {
334
341
  return false
@@ -3,14 +3,29 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.predict = exports.initialize = exports.getAppUserDiscount = exports.createEvent = exports.createAppUserDiscount = void 0;
6
+ exports.setAppVersionHeader = exports.predict = exports.initialize = exports.getPriceDecision = exports.getAppUserDiscount = exports.createViewProductItemEvent = exports.createEvent = exports.createAppUserDiscount = void 0;
7
7
  var _axios = _interopRequireDefault(require("axios"));
8
8
  var _lib = require("./lib.js");
9
9
  var _reactNative = require("react-native");
10
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
11
  const axiosInstance = _axios.default.create({
12
- baseURL: 'https://monetai-api-414410537412.us-central1.run.app/sdk' // 필요에 따라 베이스 URL 설정
12
+ baseURL: 'https://monetai-api-414410537412.us-central1.run.app/sdk',
13
+ // 필요에 따라 베이스 URL 설정
14
+ headers: {
15
+ 'X-SDK-Platform': 'react_native',
16
+ 'X-SDK-Version': (0, _lib.getSDKVersion)(),
17
+ 'X-Device-OS': _reactNative.Platform.OS === 'ios' ? 'ios' : _reactNative.Platform.OS === 'android' ? 'android' : _reactNative.Platform.OS
18
+ }
13
19
  });
20
+
21
+ /**
22
+ * X-App-Version 헤더를 설정합니다.
23
+ * SDK 초기화 시점에 호출되어야 합니다.
24
+ */
25
+ const setAppVersionHeader = version => {
26
+ axiosInstance.defaults.headers.common['X-App-Version'] = version;
27
+ };
28
+ exports.setAppVersionHeader = setAppVersionHeader;
14
29
  const initialize = async ({
15
30
  sdkKey,
16
31
  userId
@@ -24,7 +39,7 @@ const initialize = async ({
24
39
  const abTestGroupResponse = await axiosInstance.post('/ab-test', {
25
40
  sdkKey,
26
41
  userId,
27
- platform: _reactNative.Platform.OS === 'ios' ? 'ios' : _reactNative.Platform.OS === 'android' ? 'android' : null
42
+ platform: _reactNative.Platform.OS === 'ios' ? 'ios' : _reactNative.Platform.OS === 'android' ? 'android' : _reactNative.Platform.OS
28
43
  });
29
44
  return {
30
45
  organizationId: response.data.organization_id,
@@ -61,6 +76,29 @@ const createEvent = async ({
61
76
  }
62
77
  };
63
78
  exports.createEvent = createEvent;
79
+ const createViewProductItemEvent = async ({
80
+ sdkKey,
81
+ userId,
82
+ params,
83
+ createdAt
84
+ }) => {
85
+ try {
86
+ await axiosInstance.post('/events/view-product-item', {
87
+ sdkKey,
88
+ userId,
89
+ productId: params.productId,
90
+ price: params.price,
91
+ regularPrice: params.regularPrice,
92
+ currencyCode: params.currencyCode,
93
+ month: params.month,
94
+ createdAt: createdAt ?? new Date(),
95
+ platform: _reactNative.Platform.OS === 'ios' ? 'ios' : _reactNative.Platform.OS === 'android' ? 'android' : _reactNative.Platform.OS
96
+ });
97
+ } catch (error) {
98
+ console.error('Failed to log view product item event:', error.message);
99
+ }
100
+ };
101
+ exports.createViewProductItemEvent = createViewProductItemEvent;
64
102
  const predict = async ({
65
103
  userId,
66
104
  sdkKey
@@ -114,5 +152,27 @@ const getAppUserDiscount = async ({
114
152
  throw new Error(error.response?.data?.message || 'Failed to get discount info');
115
153
  }
116
154
  };
155
+
156
+ /**
157
+ * Thompson Sampling을 사용한 최적 가격 결정
158
+ * API POST /dynamic-pricing/decision 엔드포인트를 호출합니다.
159
+ */
117
160
  exports.getAppUserDiscount = getAppUserDiscount;
161
+ const getPriceDecision = async ({
162
+ sdkKey,
163
+ userId
164
+ }) => {
165
+ try {
166
+ const response = await axiosInstance.post('/dynamic-pricing/decision', {
167
+ sdkKey,
168
+ userId,
169
+ platform: _reactNative.Platform.OS === 'ios' ? 'ios' : _reactNative.Platform.OS === 'android' ? 'android' : _reactNative.Platform.OS
170
+ });
171
+ return response.data;
172
+ } catch (error) {
173
+ console.error('Failed to get price decision:', error.message);
174
+ throw new Error(error.response?.data?.message || 'Failed to get price decision');
175
+ }
176
+ };
177
+ exports.getPriceDecision = getPriceDecision;
118
178
  //# sourceMappingURL=ApiRequest.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_axios","_interopRequireDefault","require","_lib","_reactNative","e","__esModule","default","axiosInstance","axios","create","baseURL","initialize","sdkKey","userId","response","post","platform","version","getSDKVersion","abTestGroupResponse","Platform","OS","organizationId","data","organization_id","group","campaign","error","console","message","Error","exports","createEvent","eventName","params","createdAt","Date","predict","createAppUserDiscount","discountInfo","appUserId","startedAt","endedAt","discount","getAppUserDiscount","get"],"sourceRoot":"../../src","sources":["ApiRequest.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_axios","_interopRequireDefault","require","_lib","_reactNative","e","__esModule","default","axiosInstance","axios","create","baseURL","headers","getSDKVersion","Platform","OS","setAppVersionHeader","version","defaults","common","exports","initialize","sdkKey","userId","response","post","platform","abTestGroupResponse","organizationId","data","organization_id","group","campaign","error","console","message","Error","createEvent","eventName","params","createdAt","Date","createViewProductItemEvent","productId","price","regularPrice","currencyCode","month","predict","createAppUserDiscount","discountInfo","appUserId","startedAt","endedAt","discount","getAppUserDiscount","get","getPriceDecision"],"sourceRoot":"../../src","sources":["ApiRequest.ts"],"mappings":"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","ignoreList":[]}
@@ -67,6 +67,16 @@ class MonetaiSDK {
67
67
  // userId 설정
68
68
  await MonetaiReactNative.setUserId(userId);
69
69
 
70
+ // 앱 버전을 가져와서 API 헤더에 설정
71
+ try {
72
+ const appVersion = await MonetaiReactNative.getAppVersion();
73
+ if (appVersion) {
74
+ (0, _ApiRequest.setAppVersionHeader)(appVersion);
75
+ }
76
+ } catch (error) {
77
+ console.warn('[MonetaiSDK] Failed to get app version:', error);
78
+ }
79
+
70
80
  // 트랜잭션 관찰 시작
71
81
  await MonetaiReactNative.startObserving(useStoreKit2);
72
82
 
@@ -134,6 +144,37 @@ class MonetaiSDK {
134
144
  console.log('[MonetaiSDK] Logged event', eventName, params);
135
145
  }
136
146
 
147
+ /**
148
+ * 사용자가 구매 아이템을 조회했을 때 호출하는 이벤트입니다.
149
+ * @param params ViewProductItemParams
150
+ */
151
+ async logViewProductItem(params) {
152
+ const sdkKey = await this.getSdkKey();
153
+ const userId = await this.getUserId();
154
+ if (!sdkKey || !userId) {
155
+ // SDK가 초기화되지 않았거나 키가 없는 경우, 일반 이벤트 큐에 저장해두었다가
156
+ // 나중에 initialize 시점에 일반 logEvent로 처리하거나,
157
+ // 별도의 큐 처리가 필요할 수 있습니다.
158
+ // 현재 구조상 pendingEvents는 logEvent 형태(이벤트명+파라미터)를 저장하므로,
159
+ // 여기서도 'ma_view_product_item' 이름으로 저장해두면
160
+ // 추후 initialize()에서 processPendingEvents 할 때
161
+ // createEvent를 호출하게 되는데, 이때 'ma_' prefix 때문에 서버에서 거절될 수 있습니다.
162
+ //
163
+ // 해결책: pendingEvents 처리 로직도 'ma_' 여부를 체크해서 분기하거나,
164
+ // 단순하게는 여기서도 'ma_' 이벤트를 큐에 넣되,
165
+ // initialize()의 pending 처리 로직을 수정해야 합니다.
166
+ // 일단은 콘솔 경고를 남기고 리턴하거나, 큐에 넣습니다.
167
+ console.warn('[MonetaiSDK] SDK not initialized. ViewProductItem event will be ignored or queued.');
168
+ return;
169
+ }
170
+ await ApiRequest.createViewProductItemEvent({
171
+ sdkKey,
172
+ userId,
173
+ params,
174
+ createdAt: new Date()
175
+ });
176
+ }
177
+
137
178
  // Non-Purchaser 예측
138
179
  async predict() {
139
180
  const sdkKey = await this.getSdkKey();
@@ -165,6 +206,22 @@ class MonetaiSDK {
165
206
  }
166
207
  return result;
167
208
  }
209
+
210
+ /**
211
+ * Thompson Sampling을 사용한 최적 가격 결정
212
+ * @returns productId와 할인율
213
+ */
214
+ async getPriceDecision() {
215
+ const sdkKey = await this.getSdkKey();
216
+ const userId = await this.getUserId();
217
+ if (!sdkKey || !userId) {
218
+ throw new Error('MonetaiSDK is not initialized. Call initialize() first.');
219
+ }
220
+ return await ApiRequest.getPriceDecision({
221
+ sdkKey,
222
+ userId
223
+ });
224
+ }
168
225
  getInitialized() {
169
226
  return this.initialized;
170
227
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_mitt","_interopRequireDefault","_dayjs","_ApiRequest","_interopRequireWildcard","ApiRequest","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","LINKING_ERROR","Platform","select","ios","MonetaiReactNative","NativeModules","Proxy","Error","MonetaiSDK","exposureTimeSec","initialized","pendingEvents","emitter","mitt","getEmitter","getExposureTimeSec","initialize","sdkKey","userId","useStoreKit2","setSdkKey","setUserId","startObserving","sendReceipt","catch","err","console","error","result","campaign","exposure_time_sec","pendingPromises","map","eventName","params","createdAt","createEvent","log","Promise","all","then","emit","organizationId","platform","version","group","logEvent","getSdkKey","getUserId","push","Date","predict","prediction","discountInfo","getAppUserDiscount","hasActiveDiscount","app_user_id","dayjs","ended_at","isAfter","startedAt","endedAt","clone","add","createAppUserDiscount","toDate","getInitialized","reset","monetaiSDK","_default","exports"],"sourceRoot":"../../src","sources":["MonetaiSDK.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_mitt","_interopRequireDefault","_dayjs","_ApiRequest","_interopRequireWildcard","ApiRequest","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","LINKING_ERROR","Platform","select","ios","MonetaiReactNative","NativeModules","Proxy","Error","MonetaiSDK","exposureTimeSec","initialized","pendingEvents","emitter","mitt","getEmitter","getExposureTimeSec","initialize","sdkKey","userId","useStoreKit2","setSdkKey","setUserId","appVersion","getAppVersion","setAppVersionHeader","error","console","warn","startObserving","sendReceipt","catch","err","result","campaign","exposure_time_sec","pendingPromises","map","eventName","params","createdAt","createEvent","log","Promise","all","then","emit","organizationId","platform","version","group","logEvent","getSdkKey","getUserId","push","Date","logViewProductItem","createViewProductItemEvent","predict","prediction","discountInfo","getAppUserDiscount","hasActiveDiscount","app_user_id","dayjs","ended_at","isAfter","startedAt","endedAt","clone","add","createAppUserDiscount","toDate","getPriceDecision","getInitialized","reset","monetaiSDK","_default","exports"],"sourceRoot":"../../src","sources":["MonetaiSDK.ts"],"mappings":"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","ignoreList":[]}
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getSDKVersion = getSDKVersion;
7
7
  function getSDKVersion() {
8
8
  // __SDK_VERSION__이 정의되어 있으면 해당 값을 사용
9
- if (typeof "0.4.1-beta.0" === 'string') {
10
- return "0.4.1-beta.0";
9
+ if (typeof "1.0.0-beta.1" === 'string') {
10
+ return "1.0.0-beta.1";
11
11
  }
12
12
 
13
13
  // 그렇지 않으면, package.json을 lazy하게 불러와 version을 반환
@@ -4,8 +4,22 @@ import axios from 'axios';
4
4
  import { getSDKVersion } from "./lib.js";
5
5
  import { Platform } from 'react-native';
6
6
  const axiosInstance = axios.create({
7
- baseURL: 'https://monetai-api-414410537412.us-central1.run.app/sdk' // 필요에 따라 베이스 URL 설정
7
+ baseURL: 'https://monetai-api-414410537412.us-central1.run.app/sdk',
8
+ // 필요에 따라 베이스 URL 설정
9
+ headers: {
10
+ 'X-SDK-Platform': 'react_native',
11
+ 'X-SDK-Version': getSDKVersion(),
12
+ 'X-Device-OS': Platform.OS === 'ios' ? 'ios' : Platform.OS === 'android' ? 'android' : Platform.OS
13
+ }
8
14
  });
15
+
16
+ /**
17
+ * X-App-Version 헤더를 설정합니다.
18
+ * SDK 초기화 시점에 호출되어야 합니다.
19
+ */
20
+ export const setAppVersionHeader = version => {
21
+ axiosInstance.defaults.headers.common['X-App-Version'] = version;
22
+ };
9
23
  export const initialize = async ({
10
24
  sdkKey,
11
25
  userId
@@ -19,7 +33,7 @@ export const initialize = async ({
19
33
  const abTestGroupResponse = await axiosInstance.post('/ab-test', {
20
34
  sdkKey,
21
35
  userId,
22
- platform: Platform.OS === 'ios' ? 'ios' : Platform.OS === 'android' ? 'android' : null
36
+ platform: Platform.OS === 'ios' ? 'ios' : Platform.OS === 'android' ? 'android' : Platform.OS
23
37
  });
24
38
  return {
25
39
  organizationId: response.data.organization_id,
@@ -54,6 +68,28 @@ export const createEvent = async ({
54
68
  throw new Error(error.response?.data?.message || 'Failed to log event');
55
69
  }
56
70
  };
71
+ export const createViewProductItemEvent = async ({
72
+ sdkKey,
73
+ userId,
74
+ params,
75
+ createdAt
76
+ }) => {
77
+ try {
78
+ await axiosInstance.post('/events/view-product-item', {
79
+ sdkKey,
80
+ userId,
81
+ productId: params.productId,
82
+ price: params.price,
83
+ regularPrice: params.regularPrice,
84
+ currencyCode: params.currencyCode,
85
+ month: params.month,
86
+ createdAt: createdAt ?? new Date(),
87
+ platform: Platform.OS === 'ios' ? 'ios' : Platform.OS === 'android' ? 'android' : Platform.OS
88
+ });
89
+ } catch (error) {
90
+ console.error('Failed to log view product item event:', error.message);
91
+ }
92
+ };
57
93
  export const predict = async ({
58
94
  userId,
59
95
  sdkKey
@@ -105,4 +141,25 @@ export const getAppUserDiscount = async ({
105
141
  throw new Error(error.response?.data?.message || 'Failed to get discount info');
106
142
  }
107
143
  };
144
+
145
+ /**
146
+ * Thompson Sampling을 사용한 최적 가격 결정
147
+ * API POST /dynamic-pricing/decision 엔드포인트를 호출합니다.
148
+ */
149
+ export const getPriceDecision = async ({
150
+ sdkKey,
151
+ userId
152
+ }) => {
153
+ try {
154
+ const response = await axiosInstance.post('/dynamic-pricing/decision', {
155
+ sdkKey,
156
+ userId,
157
+ platform: Platform.OS === 'ios' ? 'ios' : Platform.OS === 'android' ? 'android' : Platform.OS
158
+ });
159
+ return response.data;
160
+ } catch (error) {
161
+ console.error('Failed to get price decision:', error.message);
162
+ throw new Error(error.response?.data?.message || 'Failed to get price decision');
163
+ }
164
+ };
108
165
  //# sourceMappingURL=ApiRequest.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["axios","getSDKVersion","Platform","axiosInstance","create","baseURL","initialize","sdkKey","userId","response","post","platform","version","abTestGroupResponse","OS","organizationId","data","organization_id","group","campaign","error","console","message","Error","createEvent","eventName","params","createdAt","Date","predict","createAppUserDiscount","discountInfo","appUserId","startedAt","endedAt","discount","getAppUserDiscount","get"],"sourceRoot":"../../src","sources":["ApiRequest.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["axios","getSDKVersion","Platform","axiosInstance","create","baseURL","headers","OS","setAppVersionHeader","version","defaults","common","initialize","sdkKey","userId","response","post","platform","abTestGroupResponse","organizationId","data","organization_id","group","campaign","error","console","message","Error","createEvent","eventName","params","createdAt","Date","createViewProductItemEvent","productId","price","regularPrice","currencyCode","month","predict","createAppUserDiscount","discountInfo","appUserId","startedAt","endedAt","discount","getAppUserDiscount","get","getPriceDecision"],"sourceRoot":"../../src","sources":["ApiRequest.ts"],"mappings":"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","ignoreList":[]}
@@ -4,7 +4,7 @@ import { NativeModules, Platform } from 'react-native';
4
4
  import mitt from 'mitt';
5
5
  import dayjs from 'dayjs';
6
6
  import * as ApiRequest from "./ApiRequest.js";
7
- import { createAppUserDiscount } from "./ApiRequest.js";
7
+ import { createAppUserDiscount, setAppVersionHeader } from "./ApiRequest.js";
8
8
  const LINKING_ERROR = `The package '@hayanmind/monetai-react-native' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
9
9
  ios: "- You have run 'pod install'\n",
10
10
  default: ''
@@ -61,6 +61,16 @@ class MonetaiSDK {
61
61
  // userId 설정
62
62
  await MonetaiReactNative.setUserId(userId);
63
63
 
64
+ // 앱 버전을 가져와서 API 헤더에 설정
65
+ try {
66
+ const appVersion = await MonetaiReactNative.getAppVersion();
67
+ if (appVersion) {
68
+ setAppVersionHeader(appVersion);
69
+ }
70
+ } catch (error) {
71
+ console.warn('[MonetaiSDK] Failed to get app version:', error);
72
+ }
73
+
64
74
  // 트랜잭션 관찰 시작
65
75
  await MonetaiReactNative.startObserving(useStoreKit2);
66
76
 
@@ -128,6 +138,37 @@ class MonetaiSDK {
128
138
  console.log('[MonetaiSDK] Logged event', eventName, params);
129
139
  }
130
140
 
141
+ /**
142
+ * 사용자가 구매 아이템을 조회했을 때 호출하는 이벤트입니다.
143
+ * @param params ViewProductItemParams
144
+ */
145
+ async logViewProductItem(params) {
146
+ const sdkKey = await this.getSdkKey();
147
+ const userId = await this.getUserId();
148
+ if (!sdkKey || !userId) {
149
+ // SDK가 초기화되지 않았거나 키가 없는 경우, 일반 이벤트 큐에 저장해두었다가
150
+ // 나중에 initialize 시점에 일반 logEvent로 처리하거나,
151
+ // 별도의 큐 처리가 필요할 수 있습니다.
152
+ // 현재 구조상 pendingEvents는 logEvent 형태(이벤트명+파라미터)를 저장하므로,
153
+ // 여기서도 'ma_view_product_item' 이름으로 저장해두면
154
+ // 추후 initialize()에서 processPendingEvents 할 때
155
+ // createEvent를 호출하게 되는데, 이때 'ma_' prefix 때문에 서버에서 거절될 수 있습니다.
156
+ //
157
+ // 해결책: pendingEvents 처리 로직도 'ma_' 여부를 체크해서 분기하거나,
158
+ // 단순하게는 여기서도 'ma_' 이벤트를 큐에 넣되,
159
+ // initialize()의 pending 처리 로직을 수정해야 합니다.
160
+ // 일단은 콘솔 경고를 남기고 리턴하거나, 큐에 넣습니다.
161
+ console.warn('[MonetaiSDK] SDK not initialized. ViewProductItem event will be ignored or queued.');
162
+ return;
163
+ }
164
+ await ApiRequest.createViewProductItemEvent({
165
+ sdkKey,
166
+ userId,
167
+ params,
168
+ createdAt: new Date()
169
+ });
170
+ }
171
+
131
172
  // Non-Purchaser 예측
132
173
  async predict() {
133
174
  const sdkKey = await this.getSdkKey();
@@ -159,6 +200,22 @@ class MonetaiSDK {
159
200
  }
160
201
  return result;
161
202
  }
203
+
204
+ /**
205
+ * Thompson Sampling을 사용한 최적 가격 결정
206
+ * @returns productId와 할인율
207
+ */
208
+ async getPriceDecision() {
209
+ const sdkKey = await this.getSdkKey();
210
+ const userId = await this.getUserId();
211
+ if (!sdkKey || !userId) {
212
+ throw new Error('MonetaiSDK is not initialized. Call initialize() first.');
213
+ }
214
+ return await ApiRequest.getPriceDecision({
215
+ sdkKey,
216
+ userId
217
+ });
218
+ }
162
219
  getInitialized() {
163
220
  return this.initialized;
164
221
  }
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","mitt","dayjs","ApiRequest","createAppUserDiscount","LINKING_ERROR","select","ios","default","MonetaiReactNative","Proxy","get","Error","MonetaiSDK","exposureTimeSec","initialized","pendingEvents","emitter","getEmitter","getExposureTimeSec","initialize","sdkKey","userId","useStoreKit2","setSdkKey","setUserId","startObserving","sendReceipt","catch","err","console","error","result","campaign","exposure_time_sec","pendingPromises","map","eventName","params","createdAt","createEvent","log","Promise","all","then","emit","organizationId","platform","version","group","logEvent","getSdkKey","getUserId","push","Date","predict","prediction","discountInfo","getAppUserDiscount","hasActiveDiscount","app_user_id","ended_at","isAfter","startedAt","endedAt","clone","add","toDate","getInitialized","reset","monetaiSDK"],"sourceRoot":"../../src","sources":["MonetaiSDK.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","Platform","mitt","dayjs","ApiRequest","createAppUserDiscount","setAppVersionHeader","LINKING_ERROR","select","ios","default","MonetaiReactNative","Proxy","get","Error","MonetaiSDK","exposureTimeSec","initialized","pendingEvents","emitter","getEmitter","getExposureTimeSec","initialize","sdkKey","userId","useStoreKit2","setSdkKey","setUserId","appVersion","getAppVersion","error","console","warn","startObserving","sendReceipt","catch","err","result","campaign","exposure_time_sec","pendingPromises","map","eventName","params","createdAt","createEvent","log","Promise","all","then","emit","organizationId","platform","version","group","logEvent","getSdkKey","getUserId","push","Date","logViewProductItem","createViewProductItemEvent","predict","prediction","discountInfo","getAppUserDiscount","hasActiveDiscount","app_user_id","ended_at","isAfter","startedAt","endedAt","clone","add","toDate","getPriceDecision","getInitialized","reset","monetaiSDK"],"sourceRoot":"../../src","sources":["MonetaiSDK.ts"],"mappings":"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","ignoreList":[]}
package/lib/module/lib.js CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  export function getSDKVersion() {
4
4
  // __SDK_VERSION__이 정의되어 있으면 해당 값을 사용
5
- if (typeof "0.4.1-beta.0" === 'string') {
6
- return "0.4.1-beta.0";
5
+ if (typeof "1.0.0-beta.1" === 'string') {
6
+ return "1.0.0-beta.1";
7
7
  }
8
8
 
9
9
  // 그렇지 않으면, package.json을 lazy하게 불러와 version을 반환
@@ -1,4 +1,9 @@
1
- import type { ABTestGroup, AppUserDiscountResponse, PredictResult } from './types';
1
+ import type { ABTestGroup, AppUserDiscountResponse, PredictResult, ViewProductItemParams } from './types';
2
+ /**
3
+ * X-App-Version 헤더를 설정합니다.
4
+ * SDK 초기화 시점에 호출되어야 합니다.
5
+ */
6
+ export declare const setAppVersionHeader: (version: string) => void;
2
7
  export declare const initialize: ({ sdkKey, userId, }: {
3
8
  sdkKey: string;
4
9
  userId: string;
@@ -28,6 +33,12 @@ export declare const createEvent: ({ sdkKey, userId, eventName, params, createdA
28
33
  params?: Record<string, any>;
29
34
  createdAt?: Date;
30
35
  }) => Promise<void>;
36
+ export declare const createViewProductItemEvent: ({ sdkKey, userId, params, createdAt, }: {
37
+ sdkKey: string;
38
+ userId: string;
39
+ params: ViewProductItemParams;
40
+ createdAt?: Date;
41
+ }) => Promise<void>;
31
42
  export declare const predict: ({ userId, sdkKey, }: {
32
43
  userId: string;
33
44
  sdkKey: string;
@@ -49,4 +60,15 @@ export declare const getAppUserDiscount: ({ sdkKey, userId, }: {
49
60
  sdkKey: string;
50
61
  userId: string;
51
62
  }) => Promise<AppUserDiscountResponse | null>;
63
+ /**
64
+ * Thompson Sampling을 사용한 최적 가격 결정
65
+ * API POST /dynamic-pricing/decision 엔드포인트를 호출합니다.
66
+ */
67
+ export declare const getPriceDecision: ({ sdkKey, userId, }: {
68
+ sdkKey: string;
69
+ userId: string;
70
+ }) => Promise<{
71
+ productId: string;
72
+ discount: number;
73
+ }>;
52
74
  //# sourceMappingURL=ApiRequest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApiRequest.d.ts","sourceRoot":"","sources":["../../../../src/ApiRequest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EACvB,aAAa,EACd,MAAM,SAAS,CAAC;AAQjB,eAAO,MAAM,UAAU,GAAU,qBAG9B;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;;;;;;YAeW,MAAM;oBACE,IAAI,GAAG,IAAI;yBACN,MAAM;uBACR,MAAM;oBACT,IAAI,GAAG,IAAI;kBACb,IAAI,GAAG,IAAI;uBACN,MAAM;0BACH,MAAM;wBACR,MAAM;2BACH,MAAM;wBACT,MAAM,GAAG,IAAI;;EA0BpC,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,mDAM/B;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB,kBAmBA,CAAC;AAEF,eAAO,MAAM,OAAO,GAAU,qBAG3B;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;gBAGiB,aAAa;eACd,WAAW,GAAG,IAAI;EAalC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAU,cAAc;IACxD,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,qCAiBA,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAU,qBAGtC;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,4CAcA,CAAC"}
1
+ {"version":3,"file":"ApiRequest.d.ts","sourceRoot":"","sources":["../../../../src/ApiRequest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EACvB,aAAa,EACb,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAkBjB;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,SAElD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAU,qBAG9B;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;;;;;;YAeW,MAAM;oBACE,IAAI,GAAG,IAAI;yBACN,MAAM;uBACR,MAAM;oBACT,IAAI,GAAG,IAAI;kBACb,IAAI,GAAG,IAAI;uBACN,MAAM;0BACH,MAAM;wBACR,MAAM;2BACH,MAAM;wBACT,MAAM,GAAG,IAAI;;EA0BpC,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,mDAM/B;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB,kBAmBA,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAU,wCAK9C;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,qBAAqB,CAAC;IAC9B,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB,kBAqBA,CAAC;AAEF,eAAO,MAAM,OAAO,GAAU,qBAG3B;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;gBAGiB,aAAa;eACd,WAAW,GAAG,IAAI;EAalC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAU,cAAc;IACxD,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,qCAiBA,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAU,qBAGtC;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,4CAcA,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAU,qBAGpC;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;eAGgB,MAAM;cACP,MAAM;EAkBrB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type ABTestGroup, type PredictResult, type LogEventOptions } from './types';
1
+ import { type ABTestGroup, type PredictResult, type LogEventOptions, type ViewProductItemParams } from './types';
2
2
  type MonetaiEvents = {
3
3
  LOAD_DISCOUNT_INFO: void;
4
4
  };
@@ -29,10 +29,23 @@ declare class MonetaiSDK {
29
29
  group: ABTestGroup | null;
30
30
  }>;
31
31
  logEvent({ eventName, params }: LogEventOptions): Promise<void>;
32
+ /**
33
+ * 사용자가 구매 아이템을 조회했을 때 호출하는 이벤트입니다.
34
+ * @param params ViewProductItemParams
35
+ */
36
+ logViewProductItem(params: ViewProductItemParams): Promise<void>;
32
37
  predict(): Promise<{
33
38
  prediction: PredictResult;
34
39
  testGroup: ABTestGroup | null;
35
40
  }>;
41
+ /**
42
+ * Thompson Sampling을 사용한 최적 가격 결정
43
+ * @returns productId와 할인율
44
+ */
45
+ getPriceDecision(): Promise<{
46
+ productId: string;
47
+ discount: number;
48
+ }>;
36
49
  getInitialized(): boolean;
37
50
  getUserId(): Promise<string | null>;
38
51
  getSdkKey(): Promise<string | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"MonetaiSDK.d.ts","sourceRoot":"","sources":["../../../../src/MonetaiSDK.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,SAAS,CAAC;AAqBjB,KAAK,aAAa,GAAG;IACnB,kBAAkB,EAAE,IAAI,CAAC;CAC1B,CAAC;AAEF,cAAM,UAAU;IACd,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,aAAa,CAIb;IAGR,OAAO,CAAC,OAAO,CAAyB;IAGjC,UAAU;IAIV,kBAAkB;IAIzB;;;;;;;OAOG;IACU,UAAU,CAAC,EACtB,MAAM,EACN,MAAM,EACN,YAAoB,GACrB,EAAE;QACD,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GAAG,OAAO,CAAC;QACV,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,cAAc,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;KAC3B,CAAC;IAuDW,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,eAAe;IAoB/C,OAAO,IAAI,OAAO,CAAC;QAC9B,UAAU,EAAE,aAAa,CAAC;QAC1B,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;KAC/B,CAAC;IAqCK,cAAc;IAIR,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAUnC,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAUnC,KAAK;CAInB;AAGD,QAAA,MAAM,UAAU,YAAmB,CAAC;AACpC,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"MonetaiSDK.d.ts","sourceRoot":"","sources":["../../../../src/MonetaiSDK.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC3B,MAAM,SAAS,CAAC;AAiCjB,KAAK,aAAa,GAAG;IACnB,kBAAkB,EAAE,IAAI,CAAC;CAC1B,CAAC;AAEF,cAAM,UAAU;IACd,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,aAAa,CAIb;IAGR,OAAO,CAAC,OAAO,CAAyB;IAGjC,UAAU;IAIV,kBAAkB;IAIzB;;;;;;;OAOG;IACU,UAAU,CAAC,EACtB,MAAM,EACN,MAAM,EACN,YAAoB,GACrB,EAAE;QACD,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GAAG,OAAO,CAAC;QACV,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,cAAc,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;KAC3B,CAAC;IAiEW,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,eAAe;IAmB5D;;;OAGG;IACU,kBAAkB,CAAC,MAAM,EAAE,qBAAqB;IAgChD,OAAO,IAAI,OAAO,CAAC;QAC9B,UAAU,EAAE,aAAa,CAAC;QAC1B,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;KAC/B,CAAC;IAqCF;;;OAGG;IACU,gBAAgB,IAAI,OAAO,CAAC;QACvC,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAaK,cAAc;IAIR,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAUnC,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAUnC,KAAK;CAInB;AAGD,QAAA,MAAM,UAAU,YAAmB,CAAC;AACpC,eAAe,UAAU,CAAC"}
@@ -7,5 +7,5 @@ import { useBanner } from './hooks/useBanner';
7
7
  import { usePaywall } from './hooks/usePaywall';
8
8
  export default MonetaiSDK;
9
9
  export { MonetaiProvider, Banner, Paywall, useBanner, usePaywall, CompactPaywallWrapper, HighlightBenefitsPaywallWrapper, KeyFeatureSummaryPaywallWrapper, TextFocusedPaywallWrapper, };
10
- export type { ABTestGroup, PredictResult, EventParams, LogEventOptions, DiscountInfo, AppUserDiscountResponse, PaywallConfig, Feature, BannerParams, PaywallParams, PaywallStyle, } from './types';
10
+ export type { ABTestGroup, PredictResult, EventParams, LogEventOptions, DiscountInfo, AppUserDiscountResponse, PaywallConfig, Feature, BannerParams, PaywallParams, PaywallStyle, PriceDecision, } from './types';
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAC/B,+BAA+B,EAC/B,yBAAyB,EAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,eAAe,UAAU,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,MAAM,EACN,OAAO,EACP,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,+BAA+B,EAC/B,+BAA+B,EAC/B,yBAAyB,GAC1B,CAAC;AAGF,YAAY,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,eAAe,EACf,YAAY,EACZ,uBAAuB,EACvB,aAAa,EACb,OAAO,EACP,YAAY,EACZ,aAAa,EACb,YAAY,GACb,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAC/B,+BAA+B,EAC/B,yBAAyB,EAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,eAAe,UAAU,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,MAAM,EACN,OAAO,EACP,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,+BAA+B,EAC/B,+BAA+B,EAC/B,yBAAyB,GAC1B,CAAC;AAGF,YAAY,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,eAAe,EACf,YAAY,EACZ,uBAAuB,EACvB,aAAa,EACb,OAAO,EACP,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC"}
@@ -1,5 +1,9 @@
1
1
  export type ABTestGroup = 'baseline' | 'monetai' | 'unknown';
2
2
  export type PredictResult = 'non-purchaser' | 'purchaser' | null;
3
+ export interface PriceDecision {
4
+ productId: string;
5
+ discount: number;
6
+ }
3
7
  export type PaywallStyle = 'compact' | 'highlight-benefits' | 'key-feature-summary' | 'text-focused';
4
8
  export interface Feature {
5
9
  title: string;
@@ -13,6 +17,13 @@ export interface LogEventOptions {
13
17
  eventName: string;
14
18
  params?: EventParams;
15
19
  }
20
+ export interface ViewProductItemParams {
21
+ productId: string;
22
+ price: number;
23
+ regularPrice: number;
24
+ currencyCode: string;
25
+ month?: number | null;
26
+ }
16
27
  export interface DiscountInfo {
17
28
  startedAt: Date;
18
29
  endedAt: Date;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAC7D,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,WAAW,GAAG,IAAI,CAAC;AAGjE,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,oBAAoB,GACpB,qBAAqB,GACrB,cAAc,CAAC;AAGnB,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,IAAI,CAAC;CAClB;AAGD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,YAAY,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IAGrB,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAChD,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IAErB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,9 @@
1
- import type { ABTestGroup, AppUserDiscountResponse, PredictResult } from './types';
1
+ import type { ABTestGroup, AppUserDiscountResponse, PredictResult, ViewProductItemParams } from './types';
2
+ /**
3
+ * X-App-Version 헤더를 설정합니다.
4
+ * SDK 초기화 시점에 호출되어야 합니다.
5
+ */
6
+ export declare const setAppVersionHeader: (version: string) => void;
2
7
  export declare const initialize: ({ sdkKey, userId, }: {
3
8
  sdkKey: string;
4
9
  userId: string;
@@ -28,6 +33,12 @@ export declare const createEvent: ({ sdkKey, userId, eventName, params, createdA
28
33
  params?: Record<string, any>;
29
34
  createdAt?: Date;
30
35
  }) => Promise<void>;
36
+ export declare const createViewProductItemEvent: ({ sdkKey, userId, params, createdAt, }: {
37
+ sdkKey: string;
38
+ userId: string;
39
+ params: ViewProductItemParams;
40
+ createdAt?: Date;
41
+ }) => Promise<void>;
31
42
  export declare const predict: ({ userId, sdkKey, }: {
32
43
  userId: string;
33
44
  sdkKey: string;
@@ -49,4 +60,15 @@ export declare const getAppUserDiscount: ({ sdkKey, userId, }: {
49
60
  sdkKey: string;
50
61
  userId: string;
51
62
  }) => Promise<AppUserDiscountResponse | null>;
63
+ /**
64
+ * Thompson Sampling을 사용한 최적 가격 결정
65
+ * API POST /dynamic-pricing/decision 엔드포인트를 호출합니다.
66
+ */
67
+ export declare const getPriceDecision: ({ sdkKey, userId, }: {
68
+ sdkKey: string;
69
+ userId: string;
70
+ }) => Promise<{
71
+ productId: string;
72
+ discount: number;
73
+ }>;
52
74
  //# sourceMappingURL=ApiRequest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApiRequest.d.ts","sourceRoot":"","sources":["../../../../src/ApiRequest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EACvB,aAAa,EACd,MAAM,SAAS,CAAC;AAQjB,eAAO,MAAM,UAAU,GAAU,qBAG9B;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;;;;;;YAeW,MAAM;oBACE,IAAI,GAAG,IAAI;yBACN,MAAM;uBACR,MAAM;oBACT,IAAI,GAAG,IAAI;kBACb,IAAI,GAAG,IAAI;uBACN,MAAM;0BACH,MAAM;wBACR,MAAM;2BACH,MAAM;wBACT,MAAM,GAAG,IAAI;;EA0BpC,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,mDAM/B;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB,kBAmBA,CAAC;AAEF,eAAO,MAAM,OAAO,GAAU,qBAG3B;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;gBAGiB,aAAa;eACd,WAAW,GAAG,IAAI;EAalC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAU,cAAc;IACxD,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,qCAiBA,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAU,qBAGtC;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,4CAcA,CAAC"}
1
+ {"version":3,"file":"ApiRequest.d.ts","sourceRoot":"","sources":["../../../../src/ApiRequest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EACvB,aAAa,EACb,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAkBjB;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,SAElD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAU,qBAG9B;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;;;;;;YAeW,MAAM;oBACE,IAAI,GAAG,IAAI;yBACN,MAAM;uBACR,MAAM;oBACT,IAAI,GAAG,IAAI;kBACb,IAAI,GAAG,IAAI;uBACN,MAAM;0BACH,MAAM;wBACR,MAAM;2BACH,MAAM;wBACT,MAAM,GAAG,IAAI;;EA0BpC,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,mDAM/B;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB,kBAmBA,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAU,wCAK9C;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,qBAAqB,CAAC;IAC9B,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB,kBAqBA,CAAC;AAEF,eAAO,MAAM,OAAO,GAAU,qBAG3B;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;gBAGiB,aAAa;eACd,WAAW,GAAG,IAAI;EAalC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAU,cAAc;IACxD,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,qCAiBA,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAU,qBAGtC;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,4CAcA,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAU,qBAGpC;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;eAGgB,MAAM;cACP,MAAM;EAkBrB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type ABTestGroup, type PredictResult, type LogEventOptions } from './types';
1
+ import { type ABTestGroup, type PredictResult, type LogEventOptions, type ViewProductItemParams } from './types';
2
2
  type MonetaiEvents = {
3
3
  LOAD_DISCOUNT_INFO: void;
4
4
  };
@@ -29,10 +29,23 @@ declare class MonetaiSDK {
29
29
  group: ABTestGroup | null;
30
30
  }>;
31
31
  logEvent({ eventName, params }: LogEventOptions): Promise<void>;
32
+ /**
33
+ * 사용자가 구매 아이템을 조회했을 때 호출하는 이벤트입니다.
34
+ * @param params ViewProductItemParams
35
+ */
36
+ logViewProductItem(params: ViewProductItemParams): Promise<void>;
32
37
  predict(): Promise<{
33
38
  prediction: PredictResult;
34
39
  testGroup: ABTestGroup | null;
35
40
  }>;
41
+ /**
42
+ * Thompson Sampling을 사용한 최적 가격 결정
43
+ * @returns productId와 할인율
44
+ */
45
+ getPriceDecision(): Promise<{
46
+ productId: string;
47
+ discount: number;
48
+ }>;
36
49
  getInitialized(): boolean;
37
50
  getUserId(): Promise<string | null>;
38
51
  getSdkKey(): Promise<string | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"MonetaiSDK.d.ts","sourceRoot":"","sources":["../../../../src/MonetaiSDK.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,SAAS,CAAC;AAqBjB,KAAK,aAAa,GAAG;IACnB,kBAAkB,EAAE,IAAI,CAAC;CAC1B,CAAC;AAEF,cAAM,UAAU;IACd,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,aAAa,CAIb;IAGR,OAAO,CAAC,OAAO,CAAyB;IAGjC,UAAU;IAIV,kBAAkB;IAIzB;;;;;;;OAOG;IACU,UAAU,CAAC,EACtB,MAAM,EACN,MAAM,EACN,YAAoB,GACrB,EAAE;QACD,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GAAG,OAAO,CAAC;QACV,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,cAAc,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;KAC3B,CAAC;IAuDW,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,eAAe;IAoB/C,OAAO,IAAI,OAAO,CAAC;QAC9B,UAAU,EAAE,aAAa,CAAC;QAC1B,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;KAC/B,CAAC;IAqCK,cAAc;IAIR,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAUnC,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAUnC,KAAK;CAInB;AAGD,QAAA,MAAM,UAAU,YAAmB,CAAC;AACpC,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"MonetaiSDK.d.ts","sourceRoot":"","sources":["../../../../src/MonetaiSDK.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC3B,MAAM,SAAS,CAAC;AAiCjB,KAAK,aAAa,GAAG;IACnB,kBAAkB,EAAE,IAAI,CAAC;CAC1B,CAAC;AAEF,cAAM,UAAU;IACd,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,aAAa,CAIb;IAGR,OAAO,CAAC,OAAO,CAAyB;IAGjC,UAAU;IAIV,kBAAkB;IAIzB;;;;;;;OAOG;IACU,UAAU,CAAC,EACtB,MAAM,EACN,MAAM,EACN,YAAoB,GACrB,EAAE;QACD,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GAAG,OAAO,CAAC;QACV,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,cAAc,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;KAC3B,CAAC;IAiEW,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,eAAe;IAmB5D;;;OAGG;IACU,kBAAkB,CAAC,MAAM,EAAE,qBAAqB;IAgChD,OAAO,IAAI,OAAO,CAAC;QAC9B,UAAU,EAAE,aAAa,CAAC;QAC1B,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;KAC/B,CAAC;IAqCF;;;OAGG;IACU,gBAAgB,IAAI,OAAO,CAAC;QACvC,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAaK,cAAc;IAIR,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAUnC,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAUnC,KAAK;CAInB;AAGD,QAAA,MAAM,UAAU,YAAmB,CAAC;AACpC,eAAe,UAAU,CAAC"}
@@ -7,5 +7,5 @@ import { useBanner } from './hooks/useBanner';
7
7
  import { usePaywall } from './hooks/usePaywall';
8
8
  export default MonetaiSDK;
9
9
  export { MonetaiProvider, Banner, Paywall, useBanner, usePaywall, CompactPaywallWrapper, HighlightBenefitsPaywallWrapper, KeyFeatureSummaryPaywallWrapper, TextFocusedPaywallWrapper, };
10
- export type { ABTestGroup, PredictResult, EventParams, LogEventOptions, DiscountInfo, AppUserDiscountResponse, PaywallConfig, Feature, BannerParams, PaywallParams, PaywallStyle, } from './types';
10
+ export type { ABTestGroup, PredictResult, EventParams, LogEventOptions, DiscountInfo, AppUserDiscountResponse, PaywallConfig, Feature, BannerParams, PaywallParams, PaywallStyle, PriceDecision, } from './types';
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAC/B,+BAA+B,EAC/B,yBAAyB,EAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,eAAe,UAAU,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,MAAM,EACN,OAAO,EACP,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,+BAA+B,EAC/B,+BAA+B,EAC/B,yBAAyB,GAC1B,CAAC;AAGF,YAAY,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,eAAe,EACf,YAAY,EACZ,uBAAuB,EACvB,aAAa,EACb,OAAO,EACP,YAAY,EACZ,aAAa,EACb,YAAY,GACb,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAC/B,+BAA+B,EAC/B,yBAAyB,EAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,eAAe,UAAU,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,MAAM,EACN,OAAO,EACP,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,+BAA+B,EAC/B,+BAA+B,EAC/B,yBAAyB,GAC1B,CAAC;AAGF,YAAY,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,eAAe,EACf,YAAY,EACZ,uBAAuB,EACvB,aAAa,EACb,OAAO,EACP,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC"}
@@ -1,5 +1,9 @@
1
1
  export type ABTestGroup = 'baseline' | 'monetai' | 'unknown';
2
2
  export type PredictResult = 'non-purchaser' | 'purchaser' | null;
3
+ export interface PriceDecision {
4
+ productId: string;
5
+ discount: number;
6
+ }
3
7
  export type PaywallStyle = 'compact' | 'highlight-benefits' | 'key-feature-summary' | 'text-focused';
4
8
  export interface Feature {
5
9
  title: string;
@@ -13,6 +17,13 @@ export interface LogEventOptions {
13
17
  eventName: string;
14
18
  params?: EventParams;
15
19
  }
20
+ export interface ViewProductItemParams {
21
+ productId: string;
22
+ price: number;
23
+ regularPrice: number;
24
+ currencyCode: string;
25
+ month?: number | null;
26
+ }
16
27
  export interface DiscountInfo {
17
28
  startedAt: Date;
18
29
  endedAt: Date;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAC7D,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,WAAW,GAAG,IAAI,CAAC;AAGjE,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,oBAAoB,GACpB,qBAAqB,GACrB,cAAc,CAAC;AAGnB,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,IAAI,CAAC;CAClB;AAGD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,YAAY,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IAGrB,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAChD,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IAErB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hayanmind/monetai-react-native",
3
- "version": "0.4.1-beta.0",
3
+ "version": "1.0.0-beta.1",
4
4
  "description": "Unlock hidden app revenue with AI from non-converting users",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/commonjs/index.js",
package/src/ApiRequest.ts CHANGED
@@ -3,14 +3,33 @@ import type {
3
3
  ABTestGroup,
4
4
  AppUserDiscountResponse,
5
5
  PredictResult,
6
+ ViewProductItemParams,
6
7
  } from './types';
7
8
  import { getSDKVersion } from './lib';
8
9
  import { Platform } from 'react-native';
9
10
 
10
11
  const axiosInstance = axios.create({
11
12
  baseURL: 'https://monetai-api-414410537412.us-central1.run.app/sdk', // 필요에 따라 베이스 URL 설정
13
+ headers: {
14
+ 'X-SDK-Platform': 'react_native',
15
+ 'X-SDK-Version': getSDKVersion(),
16
+ 'X-Device-OS':
17
+ Platform.OS === 'ios'
18
+ ? 'ios'
19
+ : Platform.OS === 'android'
20
+ ? 'android'
21
+ : Platform.OS,
22
+ },
12
23
  });
13
24
 
25
+ /**
26
+ * X-App-Version 헤더를 설정합니다.
27
+ * SDK 초기화 시점에 호출되어야 합니다.
28
+ */
29
+ export const setAppVersionHeader = (version: string) => {
30
+ axiosInstance.defaults.headers.common['X-App-Version'] = version;
31
+ };
32
+
14
33
  export const initialize = async ({
15
34
  sdkKey,
16
35
  userId,
@@ -52,7 +71,7 @@ export const initialize = async ({
52
71
  ? 'ios'
53
72
  : Platform.OS === 'android'
54
73
  ? 'android'
55
- : null,
74
+ : Platform.OS,
56
75
  });
57
76
 
58
77
  return {
@@ -103,6 +122,39 @@ export const createEvent = async ({
103
122
  }
104
123
  };
105
124
 
125
+ export const createViewProductItemEvent = async ({
126
+ sdkKey,
127
+ userId,
128
+ params,
129
+ createdAt,
130
+ }: {
131
+ sdkKey: string;
132
+ userId: string;
133
+ params: ViewProductItemParams;
134
+ createdAt?: Date;
135
+ }) => {
136
+ try {
137
+ await axiosInstance.post('/events/view-product-item', {
138
+ sdkKey,
139
+ userId,
140
+ productId: params.productId,
141
+ price: params.price,
142
+ regularPrice: params.regularPrice,
143
+ currencyCode: params.currencyCode,
144
+ month: params.month,
145
+ createdAt: createdAt ?? new Date(),
146
+ platform:
147
+ Platform.OS === 'ios'
148
+ ? 'ios'
149
+ : Platform.OS === 'android'
150
+ ? 'android'
151
+ : Platform.OS,
152
+ });
153
+ } catch (error: any) {
154
+ console.error('Failed to log view product item event:', error.message);
155
+ }
156
+ };
157
+
106
158
  export const predict = async ({
107
159
  userId,
108
160
  sdkKey,
@@ -177,3 +229,37 @@ export const getAppUserDiscount = async ({
177
229
  );
178
230
  }
179
231
  };
232
+
233
+ /**
234
+ * Thompson Sampling을 사용한 최적 가격 결정
235
+ * API POST /dynamic-pricing/decision 엔드포인트를 호출합니다.
236
+ */
237
+ export const getPriceDecision = async ({
238
+ sdkKey,
239
+ userId,
240
+ }: {
241
+ sdkKey: string;
242
+ userId: string;
243
+ }) => {
244
+ try {
245
+ const response = await axiosInstance.post<{
246
+ productId: string;
247
+ discount: number;
248
+ }>('/dynamic-pricing/decision', {
249
+ sdkKey,
250
+ userId,
251
+ platform:
252
+ Platform.OS === 'ios'
253
+ ? 'ios'
254
+ : Platform.OS === 'android'
255
+ ? 'android'
256
+ : Platform.OS,
257
+ });
258
+ return response.data;
259
+ } catch (error: any) {
260
+ console.error('Failed to get price decision:', error.message);
261
+ throw new Error(
262
+ error.response?.data?.message || 'Failed to get price decision'
263
+ );
264
+ }
265
+ };
package/src/MonetaiSDK.ts CHANGED
@@ -6,8 +6,9 @@ import {
6
6
  type ABTestGroup,
7
7
  type PredictResult,
8
8
  type LogEventOptions,
9
+ type ViewProductItemParams,
9
10
  } from './types';
10
- import { createAppUserDiscount } from './ApiRequest';
11
+ import { createAppUserDiscount, setAppVersionHeader } from './ApiRequest';
11
12
 
12
13
  const LINKING_ERROR =
13
14
  `The package '@hayanmind/monetai-react-native' doesn't seem to be linked. Make sure: \n\n` +
@@ -15,16 +16,28 @@ const LINKING_ERROR =
15
16
  '- You rebuilt the app after installing the package\n' +
16
17
  '- You are not using Expo Go\n';
17
18
 
18
- const MonetaiReactNative = NativeModules.MonetaiReactNative
19
- ? NativeModules.MonetaiReactNative
20
- : new Proxy(
21
- {},
22
- {
23
- get() {
24
- throw new Error(LINKING_ERROR);
25
- },
26
- }
27
- );
19
+ interface MonetaiReactNativeModule {
20
+ setUserId(userId: string): Promise<void>;
21
+ getUserId(): Promise<string | null>;
22
+ setSdkKey(sdkKey: string): Promise<void>;
23
+ getSdkKey(): Promise<string | null>;
24
+ startObserving(useStoreKit2: boolean): Promise<void>;
25
+ sendReceipt(): Promise<void>;
26
+ reset(): Promise<void>;
27
+ getAppVersion(): Promise<string | null>;
28
+ }
29
+
30
+ const MonetaiReactNative: MonetaiReactNativeModule =
31
+ NativeModules.MonetaiReactNative
32
+ ? NativeModules.MonetaiReactNative
33
+ : new Proxy(
34
+ {},
35
+ {
36
+ get() {
37
+ throw new Error(LINKING_ERROR);
38
+ },
39
+ }
40
+ );
28
41
 
29
42
  // Emitter로 사용할 이벤트 타입 정의
30
43
  type MonetaiEvents = {
@@ -90,6 +103,16 @@ class MonetaiSDK {
90
103
  // userId 설정
91
104
  await MonetaiReactNative.setUserId(userId);
92
105
 
106
+ // 앱 버전을 가져와서 API 헤더에 설정
107
+ try {
108
+ const appVersion = await MonetaiReactNative.getAppVersion();
109
+ if (appVersion) {
110
+ setAppVersionHeader(appVersion);
111
+ }
112
+ } catch (error) {
113
+ console.warn('[MonetaiSDK] Failed to get app version:', error);
114
+ }
115
+
93
116
  // 트랜잭션 관찰 시작
94
117
  await MonetaiReactNative.startObserving(useStoreKit2);
95
118
 
@@ -150,6 +173,41 @@ class MonetaiSDK {
150
173
  console.log('[MonetaiSDK] Logged event', eventName, params);
151
174
  }
152
175
 
176
+ /**
177
+ * 사용자가 구매 아이템을 조회했을 때 호출하는 이벤트입니다.
178
+ * @param params ViewProductItemParams
179
+ */
180
+ public async logViewProductItem(params: ViewProductItemParams) {
181
+ const sdkKey = await this.getSdkKey();
182
+ const userId = await this.getUserId();
183
+
184
+ if (!sdkKey || !userId) {
185
+ // SDK가 초기화되지 않았거나 키가 없는 경우, 일반 이벤트 큐에 저장해두었다가
186
+ // 나중에 initialize 시점에 일반 logEvent로 처리하거나,
187
+ // 별도의 큐 처리가 필요할 수 있습니다.
188
+ // 현재 구조상 pendingEvents는 logEvent 형태(이벤트명+파라미터)를 저장하므로,
189
+ // 여기서도 'ma_view_product_item' 이름으로 저장해두면
190
+ // 추후 initialize()에서 processPendingEvents 할 때
191
+ // createEvent를 호출하게 되는데, 이때 'ma_' prefix 때문에 서버에서 거절될 수 있습니다.
192
+ //
193
+ // 해결책: pendingEvents 처리 로직도 'ma_' 여부를 체크해서 분기하거나,
194
+ // 단순하게는 여기서도 'ma_' 이벤트를 큐에 넣되,
195
+ // initialize()의 pending 처리 로직을 수정해야 합니다.
196
+ // 일단은 콘솔 경고를 남기고 리턴하거나, 큐에 넣습니다.
197
+ console.warn(
198
+ '[MonetaiSDK] SDK not initialized. ViewProductItem event will be ignored or queued.'
199
+ );
200
+ return;
201
+ }
202
+
203
+ await ApiRequest.createViewProductItemEvent({
204
+ sdkKey,
205
+ userId,
206
+ params,
207
+ createdAt: new Date(),
208
+ });
209
+ }
210
+
153
211
  // Non-Purchaser 예측
154
212
  public async predict(): Promise<{
155
213
  prediction: PredictResult;
@@ -191,6 +249,26 @@ class MonetaiSDK {
191
249
  return result;
192
250
  }
193
251
 
252
+ /**
253
+ * Thompson Sampling을 사용한 최적 가격 결정
254
+ * @returns productId와 할인율
255
+ */
256
+ public async getPriceDecision(): Promise<{
257
+ productId: string;
258
+ discount: number;
259
+ }> {
260
+ const sdkKey = await this.getSdkKey();
261
+ const userId = await this.getUserId();
262
+
263
+ if (!sdkKey || !userId) {
264
+ throw new Error(
265
+ 'MonetaiSDK is not initialized. Call initialize() first.'
266
+ );
267
+ }
268
+
269
+ return await ApiRequest.getPriceDecision({ sdkKey, userId });
270
+ }
271
+
194
272
  public getInitialized() {
195
273
  return this.initialized;
196
274
  }
package/src/index.tsx CHANGED
@@ -37,4 +37,5 @@ export type {
37
37
  BannerParams,
38
38
  PaywallParams,
39
39
  PaywallStyle,
40
+ PriceDecision,
40
41
  } from './types';
package/src/types.ts CHANGED
@@ -1,6 +1,11 @@
1
1
  export type ABTestGroup = 'baseline' | 'monetai' | 'unknown';
2
2
  export type PredictResult = 'non-purchaser' | 'purchaser' | null;
3
3
 
4
+ export interface PriceDecision {
5
+ productId: string; // Product ID
6
+ discount: number; // 할인율 (0.5 = 50%)
7
+ }
8
+
4
9
  // Banner and Paywall style types
5
10
  export type PaywallStyle =
6
11
  | 'compact'
@@ -24,6 +29,14 @@ export interface LogEventOptions {
24
29
  params?: EventParams;
25
30
  }
26
31
 
32
+ export interface ViewProductItemParams {
33
+ productId: string;
34
+ price: number;
35
+ regularPrice: number;
36
+ currencyCode: string;
37
+ month?: number | null;
38
+ }
39
+
27
40
  export interface DiscountInfo {
28
41
  startedAt: Date;
29
42
  endedAt: Date;