@hayanmind/monetai-react-native 1.0.0-beta.1 → 1.0.0-beta.2
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/android/src/main/java/com/hayanmind/monetaireactnative/MonetaiReactNativeModule.kt +5 -0
- package/ios/MonetaiReactNative.mm +3 -0
- package/ios/MonetaiReactNative.swift +5 -0
- package/lib/commonjs/ApiRequest.js +34 -53
- package/lib/commonjs/ApiRequest.js.map +1 -1
- package/lib/commonjs/MonetaiSDK.js +18 -45
- package/lib/commonjs/MonetaiSDK.js.map +1 -1
- package/lib/commonjs/constants.js +14 -0
- package/lib/commonjs/constants.js.map +1 -0
- package/lib/commonjs/lib.js +2 -2
- package/lib/module/ApiRequest.js +29 -48
- package/lib/module/ApiRequest.js.map +1 -1
- package/lib/module/MonetaiSDK.js +19 -46
- package/lib/module/MonetaiSDK.js.map +1 -1
- package/lib/module/constants.js +10 -0
- package/lib/module/constants.js.map +1 -0
- package/lib/module/lib.js +2 -2
- package/lib/typescript/commonjs/src/ApiRequest.d.ts +12 -35
- package/lib/typescript/commonjs/src/ApiRequest.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/MonetaiSDK.d.ts +5 -14
- package/lib/typescript/commonjs/src/MonetaiSDK.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/constants.d.ts +8 -0
- package/lib/typescript/commonjs/src/constants.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +1 -1
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/types.d.ts +10 -3
- package/lib/typescript/commonjs/src/types.d.ts.map +1 -1
- package/lib/typescript/module/src/ApiRequest.d.ts +12 -35
- package/lib/typescript/module/src/ApiRequest.d.ts.map +1 -1
- package/lib/typescript/module/src/MonetaiSDK.d.ts +5 -14
- package/lib/typescript/module/src/MonetaiSDK.d.ts.map +1 -1
- package/lib/typescript/module/src/constants.d.ts +8 -0
- package/lib/typescript/module/src/constants.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +1 -1
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/lib/typescript/module/src/types.d.ts +10 -3
- package/lib/typescript/module/src/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/ApiRequest.ts +36 -94
- package/src/MonetaiSDK.ts +18 -60
- package/src/constants.ts +7 -0
- package/src/index.tsx +2 -3
- package/src/types.ts +11 -3
|
@@ -426,6 +426,11 @@ class MonetaiReactNativeModule(reactContext: ReactApplicationContext) :
|
|
|
426
426
|
}
|
|
427
427
|
}
|
|
428
428
|
|
|
429
|
+
@ReactMethod
|
|
430
|
+
fun getBundleId(promise: Promise) {
|
|
431
|
+
promise.resolve(reactApplicationContext.packageName)
|
|
432
|
+
}
|
|
433
|
+
|
|
429
434
|
companion object {
|
|
430
435
|
const val NAME = "MonetaiReactNative"
|
|
431
436
|
}
|
|
@@ -29,6 +29,9 @@ RCT_EXTERN_METHOD(reset:(RCTPromiseResolveBlock)resolve
|
|
|
29
29
|
RCT_EXTERN_METHOD(getAppVersion:(RCTPromiseResolveBlock)resolve
|
|
30
30
|
withRejecter:(RCTPromiseRejectBlock)reject)
|
|
31
31
|
|
|
32
|
+
RCT_EXTERN_METHOD(getBundleId:(RCTPromiseResolveBlock)resolve
|
|
33
|
+
withRejecter:(RCTPromiseRejectBlock)reject)
|
|
34
|
+
|
|
32
35
|
+ (BOOL)requiresMainQueueSetup
|
|
33
36
|
{
|
|
34
37
|
return NO;
|
|
@@ -336,6 +336,11 @@ class MonetaiReactNative: NSObject {
|
|
|
336
336
|
resolve(appVersion)
|
|
337
337
|
}
|
|
338
338
|
|
|
339
|
+
@objc(getBundleId:withRejecter:)
|
|
340
|
+
func getBundleId(resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
|
|
341
|
+
resolve(Bundle.main.bundleIdentifier)
|
|
342
|
+
}
|
|
343
|
+
|
|
339
344
|
@objc
|
|
340
345
|
static func requiresMainQueueSetup() -> Bool {
|
|
341
346
|
return false
|
|
@@ -3,18 +3,19 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.setUserIdHeader = exports.setBundleIdHeader = exports.setAppVersionHeader = exports.initialize = exports.getOffer = exports.getAppUserDiscount = exports.createViewProductItemEvent = exports.createEvent = void 0;
|
|
7
7
|
var _axios = _interopRequireDefault(require("axios"));
|
|
8
8
|
var _lib = require("./lib.js");
|
|
9
9
|
var _reactNative = require("react-native");
|
|
10
|
+
var _constants = require("./constants.js");
|
|
10
11
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
12
|
const axiosInstance = _axios.default.create({
|
|
12
13
|
baseURL: 'https://monetai-api-414410537412.us-central1.run.app/sdk',
|
|
13
14
|
// 필요에 따라 베이스 URL 설정
|
|
14
15
|
headers: {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
[_constants.SDK_HEADERS.SDK_PLATFORM]: 'react_native',
|
|
17
|
+
[_constants.SDK_HEADERS.SDK_VERSION]: (0, _lib.getSDKVersion)(),
|
|
18
|
+
[_constants.SDK_HEADERS.DEVICE_OS]: _reactNative.Platform.OS === 'ios' ? 'ios' : _reactNative.Platform.OS === 'android' ? 'android' : _reactNative.Platform.OS
|
|
18
19
|
}
|
|
19
20
|
});
|
|
20
21
|
|
|
@@ -23,30 +24,38 @@ const axiosInstance = _axios.default.create({
|
|
|
23
24
|
* SDK 초기화 시점에 호출되어야 합니다.
|
|
24
25
|
*/
|
|
25
26
|
const setAppVersionHeader = version => {
|
|
26
|
-
axiosInstance.defaults.headers.common[
|
|
27
|
+
axiosInstance.defaults.headers.common[_constants.SDK_HEADERS.APP_VERSION] = version;
|
|
27
28
|
};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* X-App-Bundle-Id 헤더를 설정합니다.
|
|
32
|
+
* SDK 초기화 시점에 호출되어야 합니다.
|
|
33
|
+
*/
|
|
28
34
|
exports.setAppVersionHeader = setAppVersionHeader;
|
|
35
|
+
const setBundleIdHeader = bundleId => {
|
|
36
|
+
axiosInstance.defaults.headers.common[_constants.SDK_HEADERS.BUNDLE_ID] = bundleId;
|
|
37
|
+
};
|
|
38
|
+
exports.setBundleIdHeader = setBundleIdHeader;
|
|
39
|
+
const setUserIdHeader = userId => {
|
|
40
|
+
axiosInstance.defaults.headers.common['X-User-Id'] = userId;
|
|
41
|
+
};
|
|
42
|
+
exports.setUserIdHeader = setUserIdHeader;
|
|
29
43
|
const initialize = async ({
|
|
30
44
|
sdkKey,
|
|
31
45
|
userId
|
|
32
46
|
}) => {
|
|
33
47
|
try {
|
|
48
|
+
// X-User-Id 헤더 설정 (user property 수집용)
|
|
49
|
+
setUserIdHeader(userId);
|
|
34
50
|
const response = await axiosInstance.post('/sdk-integrations', {
|
|
35
51
|
sdkKey,
|
|
36
52
|
platform: 'react_native',
|
|
37
53
|
version: (0, _lib.getSDKVersion)()
|
|
38
54
|
});
|
|
39
|
-
const abTestGroupResponse = await axiosInstance.post('/ab-test', {
|
|
40
|
-
sdkKey,
|
|
41
|
-
userId,
|
|
42
|
-
platform: _reactNative.Platform.OS === 'ios' ? 'ios' : _reactNative.Platform.OS === 'android' ? 'android' : _reactNative.Platform.OS
|
|
43
|
-
});
|
|
44
55
|
return {
|
|
45
56
|
organizationId: response.data.organization_id,
|
|
46
57
|
platform: response.data.platform,
|
|
47
|
-
version: response.data.version
|
|
48
|
-
group: abTestGroupResponse.data.group,
|
|
49
|
-
campaign: abTestGroupResponse.data.campaign
|
|
58
|
+
version: response.data.version
|
|
50
59
|
};
|
|
51
60
|
} catch (error) {
|
|
52
61
|
console.error('Failed to initialize integration:', error.message);
|
|
@@ -90,6 +99,7 @@ const createViewProductItemEvent = async ({
|
|
|
90
99
|
price: params.price,
|
|
91
100
|
regularPrice: params.regularPrice,
|
|
92
101
|
currencyCode: params.currencyCode,
|
|
102
|
+
promotionId: params.promotionId,
|
|
93
103
|
month: params.month,
|
|
94
104
|
createdAt: createdAt ?? new Date(),
|
|
95
105
|
platform: _reactNative.Platform.OS === 'ios' ? 'ios' : _reactNative.Platform.OS === 'android' ? 'android' : _reactNative.Platform.OS
|
|
@@ -98,43 +108,12 @@ const createViewProductItemEvent = async ({
|
|
|
98
108
|
console.error('Failed to log view product item event:', error.message);
|
|
99
109
|
}
|
|
100
110
|
};
|
|
101
|
-
exports.createViewProductItemEvent = createViewProductItemEvent;
|
|
102
|
-
const predict = async ({
|
|
103
|
-
userId,
|
|
104
|
-
sdkKey
|
|
105
|
-
}) => {
|
|
106
|
-
try {
|
|
107
|
-
const response = await axiosInstance.post('/predict', {
|
|
108
|
-
sdkKey,
|
|
109
|
-
userId
|
|
110
|
-
});
|
|
111
|
-
return response.data;
|
|
112
|
-
} catch (error) {
|
|
113
|
-
console.error('Failed to get A/B test group:', error.message);
|
|
114
|
-
throw new Error(error.response?.data?.message || 'Failed to get A/B test group');
|
|
115
|
-
}
|
|
116
|
-
};
|
|
117
|
-
exports.predict = predict;
|
|
118
|
-
const createAppUserDiscount = async discountInfo => {
|
|
119
|
-
try {
|
|
120
|
-
const response = await axiosInstance.post('/app-user-discounts', {
|
|
121
|
-
sdkKey: discountInfo.sdkKey,
|
|
122
|
-
appUserId: discountInfo.userId,
|
|
123
|
-
startedAt: discountInfo.startedAt,
|
|
124
|
-
endedAt: discountInfo.endedAt
|
|
125
|
-
});
|
|
126
|
-
return response.data.discount;
|
|
127
|
-
} catch (error) {
|
|
128
|
-
console.error('Failed to set discount info:', error.message);
|
|
129
|
-
throw new Error(error.response?.data?.message || 'Failed to set discount info');
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
111
|
|
|
133
112
|
/**
|
|
134
113
|
* sdkKey와 app_user_id에 해당하는 가장 최근 할인 정보를 조회합니다.
|
|
135
114
|
* API GET /app-user-discounts/latest 엔드포인트를 호출합니다.
|
|
136
115
|
*/
|
|
137
|
-
exports.
|
|
116
|
+
exports.createViewProductItemEvent = createViewProductItemEvent;
|
|
138
117
|
const getAppUserDiscount = async ({
|
|
139
118
|
sdkKey,
|
|
140
119
|
userId
|
|
@@ -154,25 +133,27 @@ const getAppUserDiscount = async ({
|
|
|
154
133
|
};
|
|
155
134
|
|
|
156
135
|
/**
|
|
157
|
-
*
|
|
158
|
-
* API POST /
|
|
136
|
+
* 오퍼 조회
|
|
137
|
+
* API POST /offers/get-offer 엔드포인트를 호출합니다.
|
|
159
138
|
*/
|
|
160
139
|
exports.getAppUserDiscount = getAppUserDiscount;
|
|
161
|
-
const
|
|
140
|
+
const getOffer = async ({
|
|
162
141
|
sdkKey,
|
|
163
|
-
userId
|
|
142
|
+
userId,
|
|
143
|
+
promotionId
|
|
164
144
|
}) => {
|
|
165
145
|
try {
|
|
166
|
-
const response = await axiosInstance.post('/
|
|
146
|
+
const response = await axiosInstance.post('/offers/get-offer', {
|
|
167
147
|
sdkKey,
|
|
168
148
|
userId,
|
|
149
|
+
promotionId,
|
|
169
150
|
platform: _reactNative.Platform.OS === 'ios' ? 'ios' : _reactNative.Platform.OS === 'android' ? 'android' : _reactNative.Platform.OS
|
|
170
151
|
});
|
|
171
152
|
return response.data;
|
|
172
153
|
} catch (error) {
|
|
173
|
-
console.error('Failed to get
|
|
174
|
-
throw new Error(error.response?.data?.message || 'Failed to get
|
|
154
|
+
console.error('Failed to get offer:', error.message);
|
|
155
|
+
throw new Error(error.response?.data?.message || 'Failed to get offer');
|
|
175
156
|
}
|
|
176
157
|
};
|
|
177
|
-
exports.
|
|
158
|
+
exports.getOffer = getOffer;
|
|
178
159
|
//# sourceMappingURL=ApiRequest.js.map
|
|
@@ -1 +1 @@
|
|
|
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","
|
|
1
|
+
{"version":3,"names":["_axios","_interopRequireDefault","require","_lib","_reactNative","_constants","e","__esModule","default","axiosInstance","axios","create","baseURL","headers","SDK_HEADERS","SDK_PLATFORM","SDK_VERSION","getSDKVersion","DEVICE_OS","Platform","OS","setAppVersionHeader","version","defaults","common","APP_VERSION","exports","setBundleIdHeader","bundleId","BUNDLE_ID","setUserIdHeader","userId","initialize","sdkKey","response","post","platform","organizationId","data","organization_id","error","console","message","Error","createEvent","eventName","params","createdAt","Date","createViewProductItemEvent","productId","price","regularPrice","currencyCode","promotionId","month","getAppUserDiscount","get","appUserId","discount","getOffer"],"sourceRoot":"../../src","sources":["ApiRequest.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
8
|
var _mitt = _interopRequireDefault(require("mitt"));
|
|
9
|
-
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
10
9
|
var _ApiRequest = _interopRequireWildcard(require("./ApiRequest.js"));
|
|
11
10
|
var ApiRequest = _ApiRequest;
|
|
12
11
|
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); }
|
|
@@ -24,7 +23,6 @@ const MonetaiReactNative = _reactNative.NativeModules.MonetaiReactNative ? _reac
|
|
|
24
23
|
// Emitter로 사용할 이벤트 타입 정의
|
|
25
24
|
|
|
26
25
|
class MonetaiSDK {
|
|
27
|
-
exposureTimeSec = null;
|
|
28
26
|
initialized = false;
|
|
29
27
|
|
|
30
28
|
// SDK 초기화 전에 로깅된 이벤트들을 저장할 큐
|
|
@@ -37,9 +35,6 @@ class MonetaiSDK {
|
|
|
37
35
|
getEmitter() {
|
|
38
36
|
return this.emitter;
|
|
39
37
|
}
|
|
40
|
-
getExposureTimeSec() {
|
|
41
|
-
return this.exposureTimeSec;
|
|
42
|
-
}
|
|
43
38
|
|
|
44
39
|
/**
|
|
45
40
|
* 모넷AI SDK를 초기화합니다
|
|
@@ -77,6 +72,16 @@ class MonetaiSDK {
|
|
|
77
72
|
console.warn('[MonetaiSDK] Failed to get app version:', error);
|
|
78
73
|
}
|
|
79
74
|
|
|
75
|
+
// Bundle ID / Package Name을 가져와서 API 헤더에 설정
|
|
76
|
+
try {
|
|
77
|
+
const bundleId = await MonetaiReactNative.getBundleId();
|
|
78
|
+
if (bundleId) {
|
|
79
|
+
(0, _ApiRequest.setBundleIdHeader)(bundleId);
|
|
80
|
+
}
|
|
81
|
+
} catch (error) {
|
|
82
|
+
console.warn('[MonetaiSDK] Failed to get bundle id:', error);
|
|
83
|
+
}
|
|
84
|
+
|
|
80
85
|
// 트랜잭션 관찰 시작
|
|
81
86
|
await MonetaiReactNative.startObserving(useStoreKit2);
|
|
82
87
|
|
|
@@ -88,7 +93,6 @@ class MonetaiSDK {
|
|
|
88
93
|
sdkKey,
|
|
89
94
|
userId
|
|
90
95
|
});
|
|
91
|
-
this.exposureTimeSec = result.campaign?.exposure_time_sec ?? null;
|
|
92
96
|
this.initialized = true;
|
|
93
97
|
|
|
94
98
|
// SDK 초기화 후, 초기화 전에 저장된 pendingEvents를 전송
|
|
@@ -114,8 +118,7 @@ class MonetaiSDK {
|
|
|
114
118
|
organizationId: result.organizationId,
|
|
115
119
|
platform: 'react_native',
|
|
116
120
|
version: result.version,
|
|
117
|
-
userId: userId
|
|
118
|
-
group: result.group
|
|
121
|
+
userId: userId
|
|
119
122
|
};
|
|
120
123
|
}
|
|
121
124
|
async logEvent({
|
|
@@ -175,51 +178,21 @@ class MonetaiSDK {
|
|
|
175
178
|
});
|
|
176
179
|
}
|
|
177
180
|
|
|
178
|
-
// Non-Purchaser 예측
|
|
179
|
-
async predict() {
|
|
180
|
-
const sdkKey = await this.getSdkKey();
|
|
181
|
-
const userId = await this.getUserId();
|
|
182
|
-
if (!sdkKey || !userId || !this.exposureTimeSec) {
|
|
183
|
-
throw new Error('MonetaiSDK is not initialized. Call initialize() first.');
|
|
184
|
-
}
|
|
185
|
-
const result = await ApiRequest.predict({
|
|
186
|
-
userId,
|
|
187
|
-
sdkKey
|
|
188
|
-
});
|
|
189
|
-
if (result.prediction === 'non-purchaser') {
|
|
190
|
-
const discountInfo = await ApiRequest.getAppUserDiscount({
|
|
191
|
-
sdkKey,
|
|
192
|
-
userId
|
|
193
|
-
});
|
|
194
|
-
const hasActiveDiscount = discountInfo != null && discountInfo.app_user_id === userId && (0, _dayjs.default)(discountInfo.ended_at).isAfter((0, _dayjs.default)());
|
|
195
|
-
if (!hasActiveDiscount) {
|
|
196
|
-
const startedAt = (0, _dayjs.default)();
|
|
197
|
-
const endedAt = startedAt.clone().add(this.exposureTimeSec, 'second');
|
|
198
|
-
await (0, _ApiRequest.createAppUserDiscount)({
|
|
199
|
-
startedAt: startedAt.toDate(),
|
|
200
|
-
endedAt: endedAt.toDate(),
|
|
201
|
-
userId,
|
|
202
|
-
sdkKey
|
|
203
|
-
});
|
|
204
|
-
this.emitter.emit('LOAD_DISCOUNT_INFO');
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
return result;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
181
|
/**
|
|
211
|
-
*
|
|
212
|
-
* @
|
|
182
|
+
* 오퍼 조회
|
|
183
|
+
* @param promotionId 프로모션 ID
|
|
184
|
+
* @returns 에이전트 매칭 결과 및 상품 목록, 없으면 null
|
|
213
185
|
*/
|
|
214
|
-
async
|
|
186
|
+
async getOffer(promotionId) {
|
|
215
187
|
const sdkKey = await this.getSdkKey();
|
|
216
188
|
const userId = await this.getUserId();
|
|
217
189
|
if (!sdkKey || !userId) {
|
|
218
190
|
throw new Error('MonetaiSDK is not initialized. Call initialize() first.');
|
|
219
191
|
}
|
|
220
|
-
return await ApiRequest.
|
|
192
|
+
return await ApiRequest.getOffer({
|
|
221
193
|
sdkKey,
|
|
222
|
-
userId
|
|
194
|
+
userId,
|
|
195
|
+
promotionId
|
|
223
196
|
});
|
|
224
197
|
}
|
|
225
198
|
getInitialized() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_mitt","_interopRequireDefault","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_mitt","_interopRequireDefault","_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","initialized","pendingEvents","emitter","mitt","getEmitter","initialize","sdkKey","userId","useStoreKit2","setSdkKey","setUserId","appVersion","getAppVersion","setAppVersionHeader","error","console","warn","bundleId","getBundleId","setBundleIdHeader","startObserving","sendReceipt","catch","err","result","pendingPromises","map","eventName","params","createdAt","createEvent","log","Promise","all","then","emit","organizationId","platform","version","logEvent","getSdkKey","getUserId","push","Date","logViewProductItem","createViewProductItemEvent","getOffer","promotionId","getInitialized","reset","monetaiSDK","_default","exports"],"sourceRoot":"../../src","sources":["MonetaiSDK.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.SDK_HEADERS = void 0;
|
|
7
|
+
const SDK_HEADERS = exports.SDK_HEADERS = {
|
|
8
|
+
BUNDLE_ID: 'X-App-Bundle-Id',
|
|
9
|
+
DEVICE_OS: 'X-Device-OS',
|
|
10
|
+
SDK_PLATFORM: 'X-SDK-Platform',
|
|
11
|
+
SDK_VERSION: 'X-SDK-Version',
|
|
12
|
+
APP_VERSION: 'X-App-Version'
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SDK_HEADERS","exports","BUNDLE_ID","DEVICE_OS","SDK_PLATFORM","SDK_VERSION","APP_VERSION"],"sourceRoot":"../../src","sources":["constants.ts"],"mappings":";;;;;;AAAO,MAAMA,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG;EACzBE,SAAS,EAAE,iBAAiB;EAC5BC,SAAS,EAAE,aAAa;EACxBC,YAAY,EAAE,gBAAgB;EAC9BC,WAAW,EAAE,eAAe;EAC5BC,WAAW,EAAE;AACf,CAAU","ignoreList":[]}
|
package/lib/commonjs/lib.js
CHANGED
|
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.getSDKVersion = getSDKVersion;
|
|
7
7
|
function getSDKVersion() {
|
|
8
8
|
// __SDK_VERSION__이 정의되어 있으면 해당 값을 사용
|
|
9
|
-
if (typeof "1.0.0-beta.
|
|
10
|
-
return "1.0.0-beta.
|
|
9
|
+
if (typeof "1.0.0-beta.2" === 'string') {
|
|
10
|
+
return "1.0.0-beta.2";
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
// 그렇지 않으면, package.json을 lazy하게 불러와 version을 반환
|
package/lib/module/ApiRequest.js
CHANGED
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
import axios from 'axios';
|
|
4
4
|
import { getSDKVersion } from "./lib.js";
|
|
5
5
|
import { Platform } from 'react-native';
|
|
6
|
+
import { SDK_HEADERS } from "./constants.js";
|
|
6
7
|
const axiosInstance = axios.create({
|
|
7
8
|
baseURL: 'https://monetai-api-414410537412.us-central1.run.app/sdk',
|
|
8
9
|
// 필요에 따라 베이스 URL 설정
|
|
9
10
|
headers: {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
[SDK_HEADERS.SDK_PLATFORM]: 'react_native',
|
|
12
|
+
[SDK_HEADERS.SDK_VERSION]: getSDKVersion(),
|
|
13
|
+
[SDK_HEADERS.DEVICE_OS]: Platform.OS === 'ios' ? 'ios' : Platform.OS === 'android' ? 'android' : Platform.OS
|
|
13
14
|
}
|
|
14
15
|
});
|
|
15
16
|
|
|
@@ -18,29 +19,35 @@ const axiosInstance = axios.create({
|
|
|
18
19
|
* SDK 초기화 시점에 호출되어야 합니다.
|
|
19
20
|
*/
|
|
20
21
|
export const setAppVersionHeader = version => {
|
|
21
|
-
axiosInstance.defaults.headers.common[
|
|
22
|
+
axiosInstance.defaults.headers.common[SDK_HEADERS.APP_VERSION] = version;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* X-App-Bundle-Id 헤더를 설정합니다.
|
|
27
|
+
* SDK 초기화 시점에 호출되어야 합니다.
|
|
28
|
+
*/
|
|
29
|
+
export const setBundleIdHeader = bundleId => {
|
|
30
|
+
axiosInstance.defaults.headers.common[SDK_HEADERS.BUNDLE_ID] = bundleId;
|
|
31
|
+
};
|
|
32
|
+
export const setUserIdHeader = userId => {
|
|
33
|
+
axiosInstance.defaults.headers.common['X-User-Id'] = userId;
|
|
22
34
|
};
|
|
23
35
|
export const initialize = async ({
|
|
24
36
|
sdkKey,
|
|
25
37
|
userId
|
|
26
38
|
}) => {
|
|
27
39
|
try {
|
|
40
|
+
// X-User-Id 헤더 설정 (user property 수집용)
|
|
41
|
+
setUserIdHeader(userId);
|
|
28
42
|
const response = await axiosInstance.post('/sdk-integrations', {
|
|
29
43
|
sdkKey,
|
|
30
44
|
platform: 'react_native',
|
|
31
45
|
version: getSDKVersion()
|
|
32
46
|
});
|
|
33
|
-
const abTestGroupResponse = await axiosInstance.post('/ab-test', {
|
|
34
|
-
sdkKey,
|
|
35
|
-
userId,
|
|
36
|
-
platform: Platform.OS === 'ios' ? 'ios' : Platform.OS === 'android' ? 'android' : Platform.OS
|
|
37
|
-
});
|
|
38
47
|
return {
|
|
39
48
|
organizationId: response.data.organization_id,
|
|
40
49
|
platform: response.data.platform,
|
|
41
|
-
version: response.data.version
|
|
42
|
-
group: abTestGroupResponse.data.group,
|
|
43
|
-
campaign: abTestGroupResponse.data.campaign
|
|
50
|
+
version: response.data.version
|
|
44
51
|
};
|
|
45
52
|
} catch (error) {
|
|
46
53
|
console.error('Failed to initialize integration:', error.message);
|
|
@@ -82,6 +89,7 @@ export const createViewProductItemEvent = async ({
|
|
|
82
89
|
price: params.price,
|
|
83
90
|
regularPrice: params.regularPrice,
|
|
84
91
|
currencyCode: params.currencyCode,
|
|
92
|
+
promotionId: params.promotionId,
|
|
85
93
|
month: params.month,
|
|
86
94
|
createdAt: createdAt ?? new Date(),
|
|
87
95
|
platform: Platform.OS === 'ios' ? 'ios' : Platform.OS === 'android' ? 'android' : Platform.OS
|
|
@@ -90,35 +98,6 @@ export const createViewProductItemEvent = async ({
|
|
|
90
98
|
console.error('Failed to log view product item event:', error.message);
|
|
91
99
|
}
|
|
92
100
|
};
|
|
93
|
-
export const predict = async ({
|
|
94
|
-
userId,
|
|
95
|
-
sdkKey
|
|
96
|
-
}) => {
|
|
97
|
-
try {
|
|
98
|
-
const response = await axiosInstance.post('/predict', {
|
|
99
|
-
sdkKey,
|
|
100
|
-
userId
|
|
101
|
-
});
|
|
102
|
-
return response.data;
|
|
103
|
-
} catch (error) {
|
|
104
|
-
console.error('Failed to get A/B test group:', error.message);
|
|
105
|
-
throw new Error(error.response?.data?.message || 'Failed to get A/B test group');
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
export const createAppUserDiscount = async discountInfo => {
|
|
109
|
-
try {
|
|
110
|
-
const response = await axiosInstance.post('/app-user-discounts', {
|
|
111
|
-
sdkKey: discountInfo.sdkKey,
|
|
112
|
-
appUserId: discountInfo.userId,
|
|
113
|
-
startedAt: discountInfo.startedAt,
|
|
114
|
-
endedAt: discountInfo.endedAt
|
|
115
|
-
});
|
|
116
|
-
return response.data.discount;
|
|
117
|
-
} catch (error) {
|
|
118
|
-
console.error('Failed to set discount info:', error.message);
|
|
119
|
-
throw new Error(error.response?.data?.message || 'Failed to set discount info');
|
|
120
|
-
}
|
|
121
|
-
};
|
|
122
101
|
|
|
123
102
|
/**
|
|
124
103
|
* sdkKey와 app_user_id에 해당하는 가장 최근 할인 정보를 조회합니다.
|
|
@@ -143,23 +122,25 @@ export const getAppUserDiscount = async ({
|
|
|
143
122
|
};
|
|
144
123
|
|
|
145
124
|
/**
|
|
146
|
-
*
|
|
147
|
-
* API POST /
|
|
125
|
+
* 오퍼 조회
|
|
126
|
+
* API POST /offers/get-offer 엔드포인트를 호출합니다.
|
|
148
127
|
*/
|
|
149
|
-
export const
|
|
128
|
+
export const getOffer = async ({
|
|
150
129
|
sdkKey,
|
|
151
|
-
userId
|
|
130
|
+
userId,
|
|
131
|
+
promotionId
|
|
152
132
|
}) => {
|
|
153
133
|
try {
|
|
154
|
-
const response = await axiosInstance.post('/
|
|
134
|
+
const response = await axiosInstance.post('/offers/get-offer', {
|
|
155
135
|
sdkKey,
|
|
156
136
|
userId,
|
|
137
|
+
promotionId,
|
|
157
138
|
platform: Platform.OS === 'ios' ? 'ios' : Platform.OS === 'android' ? 'android' : Platform.OS
|
|
158
139
|
});
|
|
159
140
|
return response.data;
|
|
160
141
|
} catch (error) {
|
|
161
|
-
console.error('Failed to get
|
|
162
|
-
throw new Error(error.response?.data?.message || 'Failed to get
|
|
142
|
+
console.error('Failed to get offer:', error.message);
|
|
143
|
+
throw new Error(error.response?.data?.message || 'Failed to get offer');
|
|
163
144
|
}
|
|
164
145
|
};
|
|
165
146
|
//# sourceMappingURL=ApiRequest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["axios","getSDKVersion","Platform","axiosInstance","create","baseURL","headers","OS","setAppVersionHeader","version","defaults","common","
|
|
1
|
+
{"version":3,"names":["axios","getSDKVersion","Platform","SDK_HEADERS","axiosInstance","create","baseURL","headers","SDK_PLATFORM","SDK_VERSION","DEVICE_OS","OS","setAppVersionHeader","version","defaults","common","APP_VERSION","setBundleIdHeader","bundleId","BUNDLE_ID","setUserIdHeader","userId","initialize","sdkKey","response","post","platform","organizationId","data","organization_id","error","console","message","Error","createEvent","eventName","params","createdAt","Date","createViewProductItemEvent","productId","price","regularPrice","currencyCode","promotionId","month","getAppUserDiscount","get","appUserId","discount","getOffer"],"sourceRoot":"../../src","sources":["ApiRequest.ts"],"mappings":"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","ignoreList":[]}
|