@apps-in-toss/web-bridge 1.3.0 → 1.4.0
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/built/bridge.d.ts
CHANGED
|
@@ -25,6 +25,8 @@ export * from './appsInTossSignTossCert';
|
|
|
25
25
|
export * from './getGameCenterGameProfile';
|
|
26
26
|
export * from './openGameCenterLeaderboard';
|
|
27
27
|
export * from './submitGameCenterLeaderBoardScore';
|
|
28
|
+
export * from './getUserKeyForGame';
|
|
29
|
+
export * from './grantPromotionRewardForGame';
|
|
28
30
|
export * from './getLocale';
|
|
29
31
|
export * from './getSchemeUri';
|
|
30
32
|
export * from './getPlatformOS';
|
package/built/bridge.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createAsyncBridge,createConstantBridge,createEventBridge}from"@apps-in-toss/bridge-core";var createEvents=function(){return{emit:function emit(event,args){for(var callbacks=this.events[event]||[],i=0,length=callbacks.length;i<length;i++){callbacks[i](args)}},events:{},on:function on(event,cb){var _this=this;var _this_events,_event;((_this_events=this.events)[_event=event]||(_this_events[_event]=[])).push(cb);return function(){var _this_events_event;_this.events[event]=(_this_events_event=_this.events[event])===null||_this_events_event===void 0?void 0:_this_events_event.filter(function(i){return cb!==i})}}}};if(typeof window!=="undefined"){window.__GRANITE_NATIVE_EMITTER=createEvents()}export var closeView=createAsyncBridge("closeView");export var generateHapticFeedback=createAsyncBridge("generateHapticFeedback");export var share=createAsyncBridge("share");export var setSecureScreen=createAsyncBridge("setSecureScreen");export var setScreenAwakeMode=createAsyncBridge("setScreenAwakeMode");export var getNetworkStatus=createAsyncBridge("getNetworkStatus");export var setIosSwipeGestureEnabled=createAsyncBridge("setIosSwipeGestureEnabled");export var openURL=createAsyncBridge("openURL");export var openPermissionDialog=createAsyncBridge("openPermissionDialog");export var getPermission=createAsyncBridge("getPermission");export var requestPermission=createAsyncBridge("requestPermission");export var setClipboardText=createConstantBridge("setClipboardText");export var getClipboardText=createConstantBridge("getClipboardText");export var fetchContacts=createConstantBridge("fetchContacts");export var fetchAlbumPhotos=createConstantBridge("fetchAlbumPhotos");export var getCurrentLocation=createConstantBridge("getCurrentLocation");export var openCamera=createConstantBridge("openCamera");export var appLogin=createAsyncBridge("appLogin");export var eventLog=createAsyncBridge("eventLog");export var getTossShareLink=createAsyncBridge("getTossShareLink");export var setDeviceOrientation=createAsyncBridge("setDeviceOrientation");export var checkoutPayment=createAsyncBridge("checkoutPayment");export var saveBase64Data=createAsyncBridge("saveBase64Data");export var appsInTossSignTossCert=createAsyncBridge("appsInTossSignTossCert");export var getGameCenterGameProfile=createAsyncBridge("getGameCenterGameProfile");export var openGameCenterLeaderboard=createAsyncBridge("openGameCenterLeaderboard");export var submitGameCenterLeaderBoardScore=createAsyncBridge("submitGameCenterLeaderBoardScore");export var getLocale=createConstantBridge("getLocale");export var getSchemeUri=createConstantBridge("getSchemeUri");export var getPlatformOS=createConstantBridge("getPlatformOS");export var getOperationalEnvironment=createConstantBridge("getOperationalEnvironment");export var getTossAppVersion=createConstantBridge("getTossAppVersion");export var getDeviceId=createConstantBridge("getDeviceId");export var contactsViral=createEventBridge("contactsViral");export var startUpdateLocation=createEventBridge("startUpdateLocation");export var onVisibilityChangedByTransparentServiceWeb=createEventBridge("onVisibilityChangedByTransparentServiceWeb");
|
|
1
|
+
import{createAsyncBridge,createConstantBridge,createEventBridge}from"@apps-in-toss/bridge-core";var createEvents=function(){return{emit:function emit(event,args){for(var callbacks=this.events[event]||[],i=0,length=callbacks.length;i<length;i++){callbacks[i](args)}},events:{},on:function on(event,cb){var _this=this;var _this_events,_event;((_this_events=this.events)[_event=event]||(_this_events[_event]=[])).push(cb);return function(){var _this_events_event;_this.events[event]=(_this_events_event=_this.events[event])===null||_this_events_event===void 0?void 0:_this_events_event.filter(function(i){return cb!==i})}}}};if(typeof window!=="undefined"){window.__GRANITE_NATIVE_EMITTER=createEvents()}export var closeView=createAsyncBridge("closeView");export var generateHapticFeedback=createAsyncBridge("generateHapticFeedback");export var share=createAsyncBridge("share");export var setSecureScreen=createAsyncBridge("setSecureScreen");export var setScreenAwakeMode=createAsyncBridge("setScreenAwakeMode");export var getNetworkStatus=createAsyncBridge("getNetworkStatus");export var setIosSwipeGestureEnabled=createAsyncBridge("setIosSwipeGestureEnabled");export var openURL=createAsyncBridge("openURL");export var openPermissionDialog=createAsyncBridge("openPermissionDialog");export var getPermission=createAsyncBridge("getPermission");export var requestPermission=createAsyncBridge("requestPermission");export var setClipboardText=createConstantBridge("setClipboardText");export var getClipboardText=createConstantBridge("getClipboardText");export var fetchContacts=createConstantBridge("fetchContacts");export var fetchAlbumPhotos=createConstantBridge("fetchAlbumPhotos");export var getCurrentLocation=createConstantBridge("getCurrentLocation");export var openCamera=createConstantBridge("openCamera");export var appLogin=createAsyncBridge("appLogin");export var eventLog=createAsyncBridge("eventLog");export var getTossShareLink=createAsyncBridge("getTossShareLink");export var setDeviceOrientation=createAsyncBridge("setDeviceOrientation");export var checkoutPayment=createAsyncBridge("checkoutPayment");export var saveBase64Data=createAsyncBridge("saveBase64Data");export var appsInTossSignTossCert=createAsyncBridge("appsInTossSignTossCert");export var getGameCenterGameProfile=createAsyncBridge("getGameCenterGameProfile");export var openGameCenterLeaderboard=createAsyncBridge("openGameCenterLeaderboard");export var submitGameCenterLeaderBoardScore=createAsyncBridge("submitGameCenterLeaderBoardScore");export var getUserKeyForGame=createAsyncBridge("getUserKeyForGame");export var grantPromotionRewardForGame=createAsyncBridge("grantPromotionRewardForGame");export var getLocale=createConstantBridge("getLocale");export var getSchemeUri=createConstantBridge("getSchemeUri");export var getPlatformOS=createConstantBridge("getPlatformOS");export var getOperationalEnvironment=createConstantBridge("getOperationalEnvironment");export var getTossAppVersion=createConstantBridge("getTossAppVersion");export var getDeviceId=createConstantBridge("getDeviceId");export var contactsViral=createEventBridge("contactsViral");export var startUpdateLocation=createEventBridge("startUpdateLocation");export var onVisibilityChangedByTransparentServiceWeb=createEventBridge("onVisibilityChangedByTransparentServiceWeb");
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
export interface GetUserKeyForGameSuccessResponse {
|
|
2
|
+
hash: string;
|
|
3
|
+
type: "HASH";
|
|
4
|
+
}
|
|
5
|
+
export interface GetUserKeyForGameErrorResponse {
|
|
6
|
+
type: "NOT_AVAILABLE";
|
|
7
|
+
}
|
|
8
|
+
export type GetUserKeyForGameResponse = GetUserKeyForGameSuccessResponse | GetUserKeyForGameErrorResponse;
|
|
9
|
+
/**
|
|
10
|
+
* @public
|
|
11
|
+
* @category 게임
|
|
12
|
+
* @name getUserKeyForGame
|
|
13
|
+
* @description
|
|
14
|
+
* 게임 카테고리 미니앱에서 사용자의 고유 키를 가져와요. 이 키를 사용해서 사용자를 식별하고 게임 데이터를 관리할 수 있어요.
|
|
15
|
+
* 게임 카테고리가 아닌 미니앱에서 호출하면 `'INVALID_CATEGORY'`를 반환해요.
|
|
16
|
+
* @returns {Promise<GetUserKeyForGameSuccessResponse | 'INVALID_CATEGORY' | 'ERROR' | undefined>}
|
|
17
|
+
* 사용자 키 조회 결과를 반환해요.
|
|
18
|
+
* - `GetUserKeyForGameSuccessResponse`: 사용자 키 조회에 성공했어요. `{ type: 'HASH', hash: string }` 형태로 반환돼요.
|
|
19
|
+
* - `'INVALID_CATEGORY'`: 게임 카테고리가 아닌 미니앱에서 호출했어요.
|
|
20
|
+
* - `'ERROR'`: 알 수 없는 오류가 발생했어요.
|
|
21
|
+
* - `undefined`: 앱 버전이 최소 지원 버전보다 낮아요.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```tsx
|
|
25
|
+
* // react-native
|
|
26
|
+
*
|
|
27
|
+
* import { getUserKeyForGame } from '@apps-in-toss/web-framework';
|
|
28
|
+
*
|
|
29
|
+
* function GameUserKeyButton() {
|
|
30
|
+
* async function handlePress() {
|
|
31
|
+
* const result = await getUserKeyForGame();
|
|
32
|
+
*
|
|
33
|
+
* if (!result) {
|
|
34
|
+
* console.warn('지원하지 않는 앱 버전이에요.');
|
|
35
|
+
* return;
|
|
36
|
+
* }
|
|
37
|
+
*
|
|
38
|
+
* if (result === 'INVALID_CATEGORY') {
|
|
39
|
+
* console.error('게임 카테고리가 아닌 미니앱이에요.');
|
|
40
|
+
* return;
|
|
41
|
+
* }
|
|
42
|
+
*
|
|
43
|
+
* if (result === 'ERROR') {
|
|
44
|
+
* console.error('사용자 키 조회 중 오류가 발생했어요.');
|
|
45
|
+
* return;
|
|
46
|
+
* }
|
|
47
|
+
*
|
|
48
|
+
* if (result.type === 'HASH') {
|
|
49
|
+
* console.log('사용자 키:', result.hash);
|
|
50
|
+
* // 여기에서 사용자 키를 사용해 게임 데이터를 관리할 수 있어요.
|
|
51
|
+
* }
|
|
52
|
+
* }
|
|
53
|
+
*
|
|
54
|
+
* return (
|
|
55
|
+
* <input type="button" onClick={handlePress} value="유저 키 가져오기" />
|
|
56
|
+
* );
|
|
57
|
+
* }
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```tsx
|
|
62
|
+
* // webview
|
|
63
|
+
* import { getUserKeyForGame } from '@apps-in-toss/web-framework';
|
|
64
|
+
*
|
|
65
|
+
* function GameUserKeyButton() {
|
|
66
|
+
* async function handleClick() {
|
|
67
|
+
* const result = await getUserKeyForGame();
|
|
68
|
+
*
|
|
69
|
+
* if (!result) {
|
|
70
|
+
* console.warn('지원하지 않는 앱 버전이에요.');
|
|
71
|
+
* return;
|
|
72
|
+
* }
|
|
73
|
+
*
|
|
74
|
+
* if (result === 'INVALID_CATEGORY') {
|
|
75
|
+
* console.error('게임 카테고리가 아닌 미니앱이에요.');
|
|
76
|
+
* return;
|
|
77
|
+
* }
|
|
78
|
+
*
|
|
79
|
+
* if (result === 'ERROR') {
|
|
80
|
+
* console.error('사용자 키 조회 중 오류가 발생했어요.');
|
|
81
|
+
* return;
|
|
82
|
+
* }
|
|
83
|
+
*
|
|
84
|
+
* if (result.type === 'HASH') {
|
|
85
|
+
* console.log('사용자 키:', result.hash);
|
|
86
|
+
* // 여기에서 사용자 키를 사용해 게임 데이터를 관리할 수 있어요.
|
|
87
|
+
* }
|
|
88
|
+
* }
|
|
89
|
+
*
|
|
90
|
+
* return (
|
|
91
|
+
* <button onClick={handleClick}>유저 키 가져오기</button>
|
|
92
|
+
* );
|
|
93
|
+
* }
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
export declare function getUserKeyForGame(): Promise<GetUserKeyForGameSuccessResponse | "INVALID_CATEGORY" | "ERROR" | undefined>;
|
|
97
|
+
|
|
98
|
+
export {};
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
export interface GrantPromotionRewardForGameSuccessResponse {
|
|
2
|
+
key: string;
|
|
3
|
+
}
|
|
4
|
+
export interface GrantPromotionRewardForGameErrorResponse {
|
|
5
|
+
code: string;
|
|
6
|
+
[key: string]: any;
|
|
7
|
+
}
|
|
8
|
+
export interface GrantPromotionRewardForGameErrorResult {
|
|
9
|
+
errorCode: string;
|
|
10
|
+
message: string;
|
|
11
|
+
}
|
|
12
|
+
export type GrantPromotionRewardForGameResponse = GrantPromotionRewardForGameSuccessResponse | GrantPromotionRewardForGameErrorResponse;
|
|
13
|
+
export type GrantPromotionRewardForGameResult = GrantPromotionRewardForGameResponse | GrantPromotionRewardForGameErrorResult | "ERROR" | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* @public
|
|
16
|
+
* @category 게임
|
|
17
|
+
* @name grantPromotionRewardForGame
|
|
18
|
+
* @description
|
|
19
|
+
* 이 함수를 사용하면 게임 카테고리 미니앱에서 프로모션 코드를 사용해서 유저에게 리워드를 지급할 수 있어요.
|
|
20
|
+
* 게임 카테고리가 아닌 미니앱에서 호출할 수 없어요.
|
|
21
|
+
* @param {{ params: { promotionCode: string; amount: number } }} params - 포인트를 지급하기 위해 필요한 정보예요.
|
|
22
|
+
* @param {string} params.promotionCode - 프로모션 코드예요.
|
|
23
|
+
* @param {number} params.amount - 지급할 포인트 금액이에요.
|
|
24
|
+
* @returns {Promise<{ key: string } | { errorCode: string; message: string } | 'ERROR' | undefined>}
|
|
25
|
+
* 포인트 지급 결과를 반환해요.
|
|
26
|
+
* - `{ key: string }`: 포인트 지급에 성공했어요. key는 리워드 키를 의미해요.
|
|
27
|
+
* - `{ errorCode: string, message: string }`: 포인트 지급에 실패했어요. 에러 코드는 다음과 같아요.
|
|
28
|
+
* - `"40000"`: 게임이 아닌 미니앱에서 호출했을 때
|
|
29
|
+
* - `"4100"`: 프로모션 정보를 찾을 수 없을 때
|
|
30
|
+
* - `"4104"`: 프로모션이 중지되었을 때
|
|
31
|
+
* - `"4105"`: 프로모션이 종료되었을 때
|
|
32
|
+
* - `"4108"`: 프로모션이 승인되지 않았을 때
|
|
33
|
+
* - `"4109"`: 프로모션이 실행중이 아닐 때
|
|
34
|
+
* - `"4110"`: 리워드를 지급/회수할 수 없을 때
|
|
35
|
+
* - `"4112"`: 프로모션 머니가 부족할 때
|
|
36
|
+
* - `"4113"`: 이미 지급/회수된 내역일 때
|
|
37
|
+
* - `"4114"`: 프로모션에 설정된 1회 지급 금액을 초과할 때
|
|
38
|
+
* - `'ERROR'`: 알 수 없는 오류가 발생했어요.
|
|
39
|
+
* - `undefined`: 앱 버전이 최소 지원 버전보다 낮아요.
|
|
40
|
+
* @example
|
|
41
|
+
* ```tsx
|
|
42
|
+
* // react-native
|
|
43
|
+
*
|
|
44
|
+
* import { grantPromotionRewardForGame } from '@apps-in-toss/web-framework';
|
|
45
|
+
*
|
|
46
|
+
* function GrantRewardButton() {
|
|
47
|
+
* async function handlePress() {
|
|
48
|
+
* const result = await grantPromotionRewardForGame({
|
|
49
|
+
* params: {
|
|
50
|
+
* promotionCode: 'GAME_EVENT_2024',
|
|
51
|
+
* amount: 1000,
|
|
52
|
+
* },
|
|
53
|
+
* });
|
|
54
|
+
*
|
|
55
|
+
* if (!result) {
|
|
56
|
+
* console.warn('지원하지 않는 앱 버전이에요.');
|
|
57
|
+
* return;
|
|
58
|
+
* }
|
|
59
|
+
*
|
|
60
|
+
* if (result === 'ERROR') {
|
|
61
|
+
* console.error('포인트 지급 중 알 수 없는 오류가 발생했어요.');
|
|
62
|
+
* return;
|
|
63
|
+
* }
|
|
64
|
+
*
|
|
65
|
+
* if ('key' in result) {
|
|
66
|
+
* console.log('포인트 지급 성공!', result.key);
|
|
67
|
+
* } else if ('errorCode' in result) {
|
|
68
|
+
* console.error('포인트 지급 실패:', result.errorCode, result.message);
|
|
69
|
+
* }
|
|
70
|
+
* }
|
|
71
|
+
*
|
|
72
|
+
* return <input type="button" onClick={handlePress} value="포인트 지급하기" />;
|
|
73
|
+
* }
|
|
74
|
+
* ```
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```tsx
|
|
78
|
+
* // webview
|
|
79
|
+
* import { grantPromotionRewardForGame } from '@apps-in-toss/web-framework';
|
|
80
|
+
*
|
|
81
|
+
* function GrantRewardButton() {
|
|
82
|
+
* async function handleClick() {
|
|
83
|
+
* const result = await grantPromotionRewardForGame({
|
|
84
|
+
* params: {
|
|
85
|
+
* promotionCode: 'GAME_EVENT_2024',
|
|
86
|
+
* amount: 1000,
|
|
87
|
+
* },
|
|
88
|
+
* });
|
|
89
|
+
*
|
|
90
|
+
* if (!result) {
|
|
91
|
+
* console.warn('지원하지 않는 앱 버전이에요.');
|
|
92
|
+
* return;
|
|
93
|
+
* }
|
|
94
|
+
*
|
|
95
|
+
* if (result === 'ERROR') {
|
|
96
|
+
* console.error('포인트 지급 중 알 수 없는 오류가 발생했어요.');
|
|
97
|
+
* return;
|
|
98
|
+
* }
|
|
99
|
+
*
|
|
100
|
+
* if ('key' in result) {
|
|
101
|
+
* console.log('포인트 지급 성공!', result.key);
|
|
102
|
+
* } else if ('errorCode' in result) {
|
|
103
|
+
* console.error('포인트 지급 실패:', result.errorCode, result.message);
|
|
104
|
+
* }
|
|
105
|
+
* }
|
|
106
|
+
*
|
|
107
|
+
* return (
|
|
108
|
+
* <button onClick={handleClick}>포인트 지급하기</button>
|
|
109
|
+
* );
|
|
110
|
+
* }
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
export declare function grantPromotionRewardForGame({ params, }: {
|
|
114
|
+
params: {
|
|
115
|
+
promotionCode: string;
|
|
116
|
+
amount: number;
|
|
117
|
+
};
|
|
118
|
+
}): Promise<GrantPromotionRewardForGameResult>;
|
|
119
|
+
|
|
120
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apps-in-toss/web-bridge",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.4.0",
|
|
5
5
|
"description": "Web Bridge for Apps In Toss",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"prepack": "yarn build",
|
|
@@ -28,11 +28,11 @@
|
|
|
28
28
|
"built"
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@apps-in-toss/types": "1.
|
|
31
|
+
"@apps-in-toss/types": "1.4.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@apps-in-toss/bridge-core": "1.
|
|
35
|
-
"@apps-in-toss/framework": "1.
|
|
34
|
+
"@apps-in-toss/bridge-core": "1.4.0",
|
|
35
|
+
"@apps-in-toss/framework": "1.4.0",
|
|
36
36
|
"@swc/core": "^1.12.7",
|
|
37
37
|
"picocolors": "^1.1.1",
|
|
38
38
|
"ts-morph": "^26.0.0",
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"publishConfig": {
|
|
47
47
|
"access": "public"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "b75a03ae2d9de16548e7ec020cbe036fe9896016"
|
|
50
50
|
}
|