@apps-in-toss/web-bridge 0.0.31 → 0.0.33
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/build/bridge.d.ts +3 -0
- package/build/bridge.js +1 -1
- package/build/getGameCenterGameProfile.d.ts +57 -0
- package/build/index.d.ts +117 -2
- package/build/index.js +91 -2
- package/build/openGameCenterLeaderboard.d.ts +25 -0
- package/build/submitGameCenterLeaderBoardScore.d.ts +64 -0
- package/package.json +5 -5
package/build/bridge.d.ts
CHANGED
|
@@ -21,7 +21,10 @@ export * from './eventLog.js';
|
|
|
21
21
|
export * from './getTossShareLink.js';
|
|
22
22
|
export * from './setDeviceOrientation.js';
|
|
23
23
|
export * from './saveBase64Data.js';
|
|
24
|
+
export * from './getGameCenterGameProfile.js';
|
|
24
25
|
export * from './getOperationalEnvironment.js';
|
|
26
|
+
export * from './openGameCenterLeaderboard.js';
|
|
27
|
+
export * from './submitGameCenterLeaderBoardScore.js';
|
|
25
28
|
export * from './getTossAppVersion.js';
|
|
26
29
|
export * from './getDeviceId.js';
|
|
27
30
|
export * from './startUpdateLocation.js';
|
package/build/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.__BEDROCK_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 getLocale=createConstantBridge("getLocale");export var getSchemeUri=createConstantBridge("getSchemeUri");export var getPlatformOS=createConstantBridge("getPlatformOS");export var setClipboardText=createAsyncBridge("setClipboardText");export var getClipboardText=createAsyncBridge("getClipboardText");export var fetchContacts=createAsyncBridge("fetchContacts");export var fetchAlbumPhotos=createAsyncBridge("fetchAlbumPhotos");export var Accuracy=function(Accuracy){Accuracy[Accuracy["Lowest"]=1]="Lowest";Accuracy[Accuracy["Low"]=2]="Low";Accuracy[Accuracy["Balanced"]=3]="Balanced";Accuracy[Accuracy["High"]=4]="High";Accuracy[Accuracy["Highest"]=5]="Highest";Accuracy[Accuracy["BestForNavigation"]=6]="BestForNavigation";return Accuracy}({});export var getCurrentLocation=createAsyncBridge("getCurrentLocation");export var openCamera=createAsyncBridge("openCamera");export var appLogin=createAsyncBridge("appLogin");export var checkoutPayment=createAsyncBridge("checkoutPayment");export var eventLog=createAsyncBridge("eventLog");export var getTossShareLink=createAsyncBridge("getTossShareLink");export var setDeviceOrientation=createAsyncBridge("setDeviceOrientation");export var saveBase64Data=createAsyncBridge("saveBase64Data");export var getOperationalEnvironment=createConstantBridge("getOperationalEnvironment");export var getTossAppVersion=createConstantBridge("getTossAppVersion");export var getDeviceId=createConstantBridge("getDeviceId");export var startUpdateLocation=createEventBridge("startUpdateLocation");
|
|
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.__BEDROCK_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 getLocale=createConstantBridge("getLocale");export var getSchemeUri=createConstantBridge("getSchemeUri");export var getPlatformOS=createConstantBridge("getPlatformOS");export var setClipboardText=createAsyncBridge("setClipboardText");export var getClipboardText=createAsyncBridge("getClipboardText");export var fetchContacts=createAsyncBridge("fetchContacts");export var fetchAlbumPhotos=createAsyncBridge("fetchAlbumPhotos");export var Accuracy=function(Accuracy){Accuracy[Accuracy["Lowest"]=1]="Lowest";Accuracy[Accuracy["Low"]=2]="Low";Accuracy[Accuracy["Balanced"]=3]="Balanced";Accuracy[Accuracy["High"]=4]="High";Accuracy[Accuracy["Highest"]=5]="Highest";Accuracy[Accuracy["BestForNavigation"]=6]="BestForNavigation";return Accuracy}({});export var getCurrentLocation=createAsyncBridge("getCurrentLocation");export var openCamera=createAsyncBridge("openCamera");export var appLogin=createAsyncBridge("appLogin");export var checkoutPayment=createAsyncBridge("checkoutPayment");export var eventLog=createAsyncBridge("eventLog");export var getTossShareLink=createAsyncBridge("getTossShareLink");export var setDeviceOrientation=createAsyncBridge("setDeviceOrientation");export var saveBase64Data=createAsyncBridge("saveBase64Data");export var getGameCenterGameProfile=createAsyncBridge("getGameCenterGameProfile");export var getOperationalEnvironment=createConstantBridge("getOperationalEnvironment");export var openGameCenterLeaderboard=createAsyncBridge("openGameCenterLeaderboard");export var submitGameCenterLeaderBoardScore=createAsyncBridge("submitGameCenterLeaderBoardScore");export var getTossAppVersion=createConstantBridge("getTossAppVersion");export var getDeviceId=createConstantBridge("getDeviceId");export var startUpdateLocation=createEventBridge("startUpdateLocation");
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @category 게임센터
|
|
3
|
+
* @name GameCenterGameProfileResponse
|
|
4
|
+
* @description 토스게임센터 프로필을 가져온 결과 타입이에요.
|
|
5
|
+
* 앱에 프로필이 없는 경우, `statusCode`가 `'PROFILE_NOT_FOUND'`이고 다른 정보는 없어요.
|
|
6
|
+
* 프로필이 있는 경우 `statusCode`가 `'SUCCESS'`이고, 닉네임과 프로필 이미지 주소가 함께 제공돼요.
|
|
7
|
+
* @property {string} statusCode 프로필 조회 결과 상태예요. `'SUCCESS'` 또는 `'PROFILE_NOT_FOUND'` 중 하나예요.
|
|
8
|
+
* @property {string} [nickname] 프로필 닉네임이에요. `statusCode`가 `'SUCCESS'`일 때만 있어요.
|
|
9
|
+
* @property {string} [profileImageUri] 프로필 이미지 URL이에요. `statusCode`가 `'SUCCESS'`일 때만 있어요.
|
|
10
|
+
*/
|
|
11
|
+
export type GameCenterGameProfileResponse = {
|
|
12
|
+
statusCode: "PROFILE_NOT_FOUND";
|
|
13
|
+
} | {
|
|
14
|
+
statusCode: "SUCCESS";
|
|
15
|
+
nickname: string;
|
|
16
|
+
profileImageUri: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* @category 게임센터
|
|
20
|
+
* @name getGameCenterGameProfile
|
|
21
|
+
* @description 토스게임센터 프로필 정보를 가져와요.
|
|
22
|
+
* 사용자가 프로필을 만들지 않았다면 `statusCode`가 `'PROFILE_NOT_FOUND'`인 응답이 반환돼요.
|
|
23
|
+
* 앱 버전이 최소 지원 버전(안드로이드 5.221.0, iOS 5.221.0)보다 낮으면 `undefined`를 반환해요.
|
|
24
|
+
* @returns {Promise<GameCenterGameProfileResponse | undefined>} 프로필 정보 또는 `undefined`를 반환해요.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ### 게임센터 프로필 가져오기
|
|
28
|
+
* ```tsx
|
|
29
|
+
* import { getGameCenterGameProfile } from './getGameCenterGameProfile';
|
|
30
|
+
* import { useState } from 'react';
|
|
31
|
+
*
|
|
32
|
+
*
|
|
33
|
+
* function GameProfile() {
|
|
34
|
+
* const [profile, setProfile] = useState<GameCenterGameProfileResponse | null>(null);
|
|
35
|
+
*
|
|
36
|
+
* const handlePress = async () => {
|
|
37
|
+
* try {
|
|
38
|
+
* const result = await getGameCenterGameProfile();
|
|
39
|
+
* if (result) {
|
|
40
|
+
* setProfile(result);
|
|
41
|
+
* }
|
|
42
|
+
* } catch (error) {
|
|
43
|
+
* console.error('게임센터 프로필 가져오기에 실패했어요.', error);
|
|
44
|
+
* }
|
|
45
|
+
* };
|
|
46
|
+
*
|
|
47
|
+
* return (
|
|
48
|
+
* <div>
|
|
49
|
+
* <input type="button" value="게임센터 프로필 가져오기" onClick={handlePress} />
|
|
50
|
+
* </div>
|
|
51
|
+
* );
|
|
52
|
+
* }
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export declare function getGameCenterGameProfile(): Promise<GameCenterGameProfileResponse | undefined>;
|
|
56
|
+
|
|
57
|
+
export {};
|
package/build/index.d.ts
CHANGED
|
@@ -154,7 +154,7 @@ declare const IAP: {
|
|
|
154
154
|
*/
|
|
155
155
|
createOneTimePurchaseOrder: (args_0: {
|
|
156
156
|
productId: string;
|
|
157
|
-
}
|
|
157
|
+
}) => Promise<IapCreateOneTimePurchaseOrderResult>;
|
|
158
158
|
/**
|
|
159
159
|
* @public
|
|
160
160
|
* @category 인앱결제
|
|
@@ -539,4 +539,119 @@ interface AppsInTossGlobals {
|
|
|
539
539
|
}
|
|
540
540
|
declare const getAppsInTossGlobals: () => AppsInTossGlobals;
|
|
541
541
|
|
|
542
|
-
|
|
542
|
+
type TdsEvent = {
|
|
543
|
+
navigationAccessoryEvent: {
|
|
544
|
+
onEvent: (data: {
|
|
545
|
+
id: string;
|
|
546
|
+
}) => void;
|
|
547
|
+
onError?: (error: Error) => void;
|
|
548
|
+
options: undefined;
|
|
549
|
+
};
|
|
550
|
+
};
|
|
551
|
+
/**
|
|
552
|
+
* @public
|
|
553
|
+
* @category TDS
|
|
554
|
+
* @name tdsEvent
|
|
555
|
+
* @description 토스 이벤트를 사용해요.
|
|
556
|
+
* @property {typeof addEventListener} [addEventListener] 이벤트를 추가해요.
|
|
557
|
+
*/
|
|
558
|
+
declare const tdsEvent: {
|
|
559
|
+
/**
|
|
560
|
+
* @public
|
|
561
|
+
* @category TDS
|
|
562
|
+
* @name addEventListener
|
|
563
|
+
* @description 이벤트를 추가해요.
|
|
564
|
+
* @param {string} event 이벤트 이름예요.
|
|
565
|
+
* @param {TdsEvent[K]['onEvent']} onEvent 이벤트 핸들러예요.
|
|
566
|
+
* @param {TdsEvent[K]['onError']} onError 이벤트 에러 핸들러예요.
|
|
567
|
+
* @param {TdsEvent[K]['options']} options 이벤트 옵션예요.
|
|
568
|
+
* @returns {void} 이벤트를 추가했을 때 아무 값도 반환하지 않아요.
|
|
569
|
+
* @example
|
|
570
|
+
* ### 네비게이션 악세서리 이벤트 추가하기
|
|
571
|
+
* ```tsx
|
|
572
|
+
* import { tdsEvent } from '@apps-in-toss/framework';
|
|
573
|
+
*
|
|
574
|
+
* tdsEvent.addEventListener('navigationAccessoryEvent', {
|
|
575
|
+
* onEvent: ({ id }) => {
|
|
576
|
+
* if(id === 'heart') {
|
|
577
|
+
* router.push('/heart');
|
|
578
|
+
* }
|
|
579
|
+
* },
|
|
580
|
+
* });
|
|
581
|
+
* ```
|
|
582
|
+
*/
|
|
583
|
+
addEventListener: <K extends keyof TdsEvent>(event: K, { onEvent, onError, options, }: {
|
|
584
|
+
onEvent: TdsEvent[K]["onEvent"];
|
|
585
|
+
onError?: TdsEvent[K]["onError"];
|
|
586
|
+
options?: TdsEvent[K]["options"];
|
|
587
|
+
}) => () => void;
|
|
588
|
+
};
|
|
589
|
+
|
|
590
|
+
type AddAccessoryButtonOptions = {
|
|
591
|
+
id: string;
|
|
592
|
+
type: 'icon';
|
|
593
|
+
name: string;
|
|
594
|
+
alt: string;
|
|
595
|
+
} | {
|
|
596
|
+
type: 'icon-double';
|
|
597
|
+
color?: string;
|
|
598
|
+
leftIconName: string;
|
|
599
|
+
leftIconAlt: string;
|
|
600
|
+
rightIconName: string;
|
|
601
|
+
rightIconAlt: string;
|
|
602
|
+
id: [string, string];
|
|
603
|
+
};
|
|
604
|
+
/**
|
|
605
|
+
* @public
|
|
606
|
+
* @category 파트너
|
|
607
|
+
* @name partner
|
|
608
|
+
* @description 파트너 기능을 사용해요.
|
|
609
|
+
* @property {typeof addAccessoryButton} [addAccessoryButton] 상단 네비게이션의 악세서리 버튼을 추가해요.
|
|
610
|
+
*/
|
|
611
|
+
declare const partner: {
|
|
612
|
+
/**
|
|
613
|
+
* @public
|
|
614
|
+
* @category 파트너
|
|
615
|
+
* @name addAccessoryButton
|
|
616
|
+
* @description 상단 네비게이션의 악세서리 버튼을 추가해요. callback에 대한 정의는 `tdsEvent.addEventListener("navigationAccessoryEvent", callback)`를 참고해주세요.
|
|
617
|
+
* @param {AddAccessoryButtonOptions} options - 악세서리 버튼의 고유 ID예요.
|
|
618
|
+
* @returns {void} 악세서리 버튼을 추가했을 때 아무 값도 반환하지 않아요.
|
|
619
|
+
* @example
|
|
620
|
+
* ```tsx
|
|
621
|
+
* import { partner } from '@apps-in-toss/framework';
|
|
622
|
+
*
|
|
623
|
+
* partner.addAccessoryButton({
|
|
624
|
+
* id: 'heart',
|
|
625
|
+
* type: 'icon',
|
|
626
|
+
* name: 'icon-heart-mono',
|
|
627
|
+
* alt: '하트',
|
|
628
|
+
* });
|
|
629
|
+
*
|
|
630
|
+
* partner.addAccessoryButton({
|
|
631
|
+
* id: ['heart', 'heart2'],
|
|
632
|
+
* type: 'icon-double',
|
|
633
|
+
* leftIconName: 'icon-heart-mono',
|
|
634
|
+
* leftIconAlt: '하트',
|
|
635
|
+
* rightIconName: 'icon-heart-mono',
|
|
636
|
+
* rightIconAlt: '하트',
|
|
637
|
+
* });
|
|
638
|
+
* ```
|
|
639
|
+
*/
|
|
640
|
+
addAccessoryButton: (args_0: AddAccessoryButtonOptions) => Promise<void>;
|
|
641
|
+
/**
|
|
642
|
+
* @public
|
|
643
|
+
* @category 파트너
|
|
644
|
+
* @name removeAccessoryButton
|
|
645
|
+
* @description 상단 네비게이션의 악세서리 버튼을 제거해요.
|
|
646
|
+
* @returns {void} 악세서리 버튼을 제거했을 때 아무 값도 반환하지 않아요.
|
|
647
|
+
* @example
|
|
648
|
+
* ```tsx
|
|
649
|
+
* import { partner } from '@apps-in-toss/framework';
|
|
650
|
+
*
|
|
651
|
+
* partner.removeAccessoryButton();
|
|
652
|
+
* ```
|
|
653
|
+
*/
|
|
654
|
+
removeAccessoryButton: () => Promise<void>;
|
|
655
|
+
};
|
|
656
|
+
|
|
657
|
+
export { type AddAccessoryButtonOptions, type AppsInTossEvent, type AppsInTossGlobals, type BedrockEvent, GoogleAdMob, IAP, type IapCreateOneTimePurchaseOrderResult, type IapProductListItem, Storage, type TdsEvent, appsInTossEvent, bedrockEvent, env, getAppsInTossGlobals, getSafeAreaInsets, isMinVersionSupported, partner, tdsEvent };
|
package/build/index.js
CHANGED
|
@@ -121,7 +121,7 @@ function getSafeAreaInsets() {
|
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
// src/googleAdMob.ts
|
|
124
|
-
import {
|
|
124
|
+
import { createConstantBridge as createConstantBridge2, createEventBridge } from "@apps-in-toss/bridge-core";
|
|
125
125
|
var GoogleAdMob = {
|
|
126
126
|
/**
|
|
127
127
|
* @public
|
|
@@ -542,6 +542,93 @@ var getAppsInTossGlobals = () => {
|
|
|
542
542
|
brandBridgeColorMode: brandBridgeColorMode()
|
|
543
543
|
};
|
|
544
544
|
};
|
|
545
|
+
|
|
546
|
+
// src/tdsEvent.ts
|
|
547
|
+
import { createEventBridge as createEventBridge4 } from "@apps-in-toss/bridge-core";
|
|
548
|
+
var tdsEvent = {
|
|
549
|
+
/**
|
|
550
|
+
* @public
|
|
551
|
+
* @category TDS
|
|
552
|
+
* @name addEventListener
|
|
553
|
+
* @description 이벤트를 추가해요.
|
|
554
|
+
* @param {string} event 이벤트 이름예요.
|
|
555
|
+
* @param {TdsEvent[K]['onEvent']} onEvent 이벤트 핸들러예요.
|
|
556
|
+
* @param {TdsEvent[K]['onError']} onError 이벤트 에러 핸들러예요.
|
|
557
|
+
* @param {TdsEvent[K]['options']} options 이벤트 옵션예요.
|
|
558
|
+
* @returns {void} 이벤트를 추가했을 때 아무 값도 반환하지 않아요.
|
|
559
|
+
* @example
|
|
560
|
+
* ### 네비게이션 악세서리 이벤트 추가하기
|
|
561
|
+
* ```tsx
|
|
562
|
+
* import { tdsEvent } from '@apps-in-toss/framework';
|
|
563
|
+
*
|
|
564
|
+
* tdsEvent.addEventListener('navigationAccessoryEvent', {
|
|
565
|
+
* onEvent: ({ id }) => {
|
|
566
|
+
* if(id === 'heart') {
|
|
567
|
+
* router.push('/heart');
|
|
568
|
+
* }
|
|
569
|
+
* },
|
|
570
|
+
* });
|
|
571
|
+
* ```
|
|
572
|
+
*/
|
|
573
|
+
addEventListener: (event, {
|
|
574
|
+
onEvent,
|
|
575
|
+
onError,
|
|
576
|
+
options
|
|
577
|
+
}) => createEventBridge4(event)({
|
|
578
|
+
onEvent,
|
|
579
|
+
onError: onError ?? (() => {
|
|
580
|
+
}),
|
|
581
|
+
options
|
|
582
|
+
})
|
|
583
|
+
};
|
|
584
|
+
|
|
585
|
+
// src/partner.ts
|
|
586
|
+
import { createAsyncBridge as createAsyncBridge3 } from "@apps-in-toss/bridge-core";
|
|
587
|
+
var partner = {
|
|
588
|
+
/**
|
|
589
|
+
* @public
|
|
590
|
+
* @category 파트너
|
|
591
|
+
* @name addAccessoryButton
|
|
592
|
+
* @description 상단 네비게이션의 악세서리 버튼을 추가해요. callback에 대한 정의는 `tdsEvent.addEventListener("navigationAccessoryEvent", callback)`를 참고해주세요.
|
|
593
|
+
* @param {AddAccessoryButtonOptions} options - 악세서리 버튼의 고유 ID예요.
|
|
594
|
+
* @returns {void} 악세서리 버튼을 추가했을 때 아무 값도 반환하지 않아요.
|
|
595
|
+
* @example
|
|
596
|
+
* ```tsx
|
|
597
|
+
* import { partner } from '@apps-in-toss/framework';
|
|
598
|
+
*
|
|
599
|
+
* partner.addAccessoryButton({
|
|
600
|
+
* id: 'heart',
|
|
601
|
+
* type: 'icon',
|
|
602
|
+
* name: 'icon-heart-mono',
|
|
603
|
+
* alt: '하트',
|
|
604
|
+
* });
|
|
605
|
+
*
|
|
606
|
+
* partner.addAccessoryButton({
|
|
607
|
+
* id: ['heart', 'heart2'],
|
|
608
|
+
* type: 'icon-double',
|
|
609
|
+
* leftIconName: 'icon-heart-mono',
|
|
610
|
+
* leftIconAlt: '하트',
|
|
611
|
+
* rightIconName: 'icon-heart-mono',
|
|
612
|
+
* rightIconAlt: '하트',
|
|
613
|
+
* });
|
|
614
|
+
* ```
|
|
615
|
+
*/
|
|
616
|
+
addAccessoryButton: createAsyncBridge3("addAccessoryButton"),
|
|
617
|
+
/**
|
|
618
|
+
* @public
|
|
619
|
+
* @category 파트너
|
|
620
|
+
* @name removeAccessoryButton
|
|
621
|
+
* @description 상단 네비게이션의 악세서리 버튼을 제거해요.
|
|
622
|
+
* @returns {void} 악세서리 버튼을 제거했을 때 아무 값도 반환하지 않아요.
|
|
623
|
+
* @example
|
|
624
|
+
* ```tsx
|
|
625
|
+
* import { partner } from '@apps-in-toss/framework';
|
|
626
|
+
*
|
|
627
|
+
* partner.removeAccessoryButton();
|
|
628
|
+
* ```
|
|
629
|
+
*/
|
|
630
|
+
removeAccessoryButton: createAsyncBridge3("removeAccessoryButton")
|
|
631
|
+
};
|
|
545
632
|
export {
|
|
546
633
|
GoogleAdMob,
|
|
547
634
|
IAP,
|
|
@@ -551,5 +638,7 @@ export {
|
|
|
551
638
|
env,
|
|
552
639
|
getAppsInTossGlobals,
|
|
553
640
|
getSafeAreaInsets,
|
|
554
|
-
isMinVersionSupported
|
|
641
|
+
isMinVersionSupported,
|
|
642
|
+
partner,
|
|
643
|
+
tdsEvent
|
|
555
644
|
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @public
|
|
3
|
+
* @category 게임센터
|
|
4
|
+
* @name openGameCenterLeaderboard
|
|
5
|
+
* @description 게임센터 리더보드 웹뷰를 열어요.
|
|
6
|
+
* 앱 버전이 최소 지원 버전(`5.221.0`)보다 낮으면 아무 동작도 하지 않고 `undefined`를 반환해요.
|
|
7
|
+
* 게임센터를 사용하는 사용자는 반드시 최소 지원 버전 이상이어야 게임을 실행할 수 있어요.
|
|
8
|
+
* @returns 리더보드 웹뷰를 호출해요. 앱 버전이 낮으면 아무 동작도 하지 않고 `undefined`를 반환해요.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
*
|
|
12
|
+
* import { openGameCenterLeaderboard } from '@apps-in-toss/web-framework';
|
|
13
|
+
*
|
|
14
|
+
* // '리더보드' 버튼을 누르면 게임센터 리더보드 웹뷰가 열려요.
|
|
15
|
+
* function LeaderboardButton() {
|
|
16
|
+
* const onClick = () => {
|
|
17
|
+
* openGameCenterLeaderboard();
|
|
18
|
+
* };
|
|
19
|
+
*
|
|
20
|
+
* return <input type="button" value="리더보드 웹뷰 호출" onClick={onClick} />;
|
|
21
|
+
* }
|
|
22
|
+
*/
|
|
23
|
+
export declare function openGameCenterLeaderboard(): Promise<void>;
|
|
24
|
+
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @public
|
|
3
|
+
* @category 게임센터
|
|
4
|
+
* @name SubmitGameCenterLeaderBoardScoreResponse
|
|
5
|
+
* @description
|
|
6
|
+
* 토스게임센터 리더보드에 점수를 제출한 결과 정보를 담아서 반환해요. 반환된 정보를 사용해서 점수 제출 결과에 따라 적절한 에러 처리를 할 수 있어요.
|
|
7
|
+
* @property {'SUCCESS' | 'LEADERBOARD_NOT_FOUND' | 'PROFILE_NOT_FOUND' | 'UNPARSABLE_SCORE'} statusCode
|
|
8
|
+
* 점수 제출 결과를 나타내는 상태 코드예요.
|
|
9
|
+
* - `'SUCCESS'`: 점수 제출이 성공했어요.
|
|
10
|
+
* - `'LEADERBOARD_NOT_FOUND'`: `gameId`에 해당하는 리더보드를 찾을 수 없어요.
|
|
11
|
+
* - `'PROFILE_NOT_FOUND'`: 사용자의 프로필이 없어요.
|
|
12
|
+
* - `'UNPARSABLE_SCORE'`: 점수를 해석할 수 없어요. 점수는 실수(float) 형태의 문자열로 전달해야 해요.
|
|
13
|
+
*/
|
|
14
|
+
export interface SubmitGameCenterLeaderBoardScoreResponse {
|
|
15
|
+
statusCode: "SUCCESS" | "LEADERBOARD_NOT_FOUND" | "PROFILE_NOT_FOUND" | "UNPARSABLE_SCORE";
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* @public
|
|
19
|
+
* @category 게임센터
|
|
20
|
+
* @name submitGameCenterLeaderBoardScore
|
|
21
|
+
* @description
|
|
22
|
+
* 사용자의 게임 점수를 토스게임센터 리더보드에 제출해요. 이 기능으로 사용자의 점수를 공식 리더보드에 기록하고 다른 사용자와 비교할 수 있어요.
|
|
23
|
+
* @param {string} params.score
|
|
24
|
+
* 제출할 게임 점수예요. 실수 형태의 숫자를 문자열로 전달해야 해요. 예를들어 `"123.45"` 또는 `"9999"` 예요.
|
|
25
|
+
* @returns {Promise<SubmitGameCenterLeaderBoardScoreResponse | undefined>}
|
|
26
|
+
* 점수 제출 결과를 반환해요. 앱 버전이 최소 지원 버전보다 낮으면 아무 동작도 하지 않고 `undefined`를 반환해요.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ### 게임 점수를 토스게임센터 리더보드에 제출하기
|
|
30
|
+
* ```tsx
|
|
31
|
+
*
|
|
32
|
+
* import { submitGameCenterLeaderBoardScore } from '@apps-in-toss/web-framework';
|
|
33
|
+
*
|
|
34
|
+
* function GameCenterLeaderBoardScoreSubmitButton() {
|
|
35
|
+
* async function handlePress() {
|
|
36
|
+
* try {
|
|
37
|
+
* const result = await submitGameCenterLeaderBoardScore({ score: '123.45' });
|
|
38
|
+
*
|
|
39
|
+
* if (!result) {
|
|
40
|
+
* console.warn('지원하지 않는 앱 버전이에요.');
|
|
41
|
+
* return;
|
|
42
|
+
* }
|
|
43
|
+
*
|
|
44
|
+
* if (result.statusCode === 'SUCCESS') {
|
|
45
|
+
* console.log('점수 제출 성공!');
|
|
46
|
+
* } else {
|
|
47
|
+
* console.error('점수 제출 실패:', result.statusCode);
|
|
48
|
+
* }
|
|
49
|
+
* } catch (error) {
|
|
50
|
+
* console.error('점수 제출 중 오류가 발생했어요.', error);
|
|
51
|
+
* }
|
|
52
|
+
* }
|
|
53
|
+
*
|
|
54
|
+
* return (
|
|
55
|
+
* <input type="button" onClick={handlePress}>점수 제출하기</button>
|
|
56
|
+
* );
|
|
57
|
+
* }
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare function submitGameCenterLeaderBoardScore(params: {
|
|
61
|
+
score: string;
|
|
62
|
+
}): Promise<SubmitGameCenterLeaderBoardScoreResponse | undefined>;
|
|
63
|
+
|
|
64
|
+
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": "0.0.
|
|
4
|
+
"version": "0.0.33",
|
|
5
5
|
"description": "Web Bridge for Apps In Toss",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"prepack": "yarn build",
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
"build"
|
|
24
24
|
],
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@apps-in-toss-internal/bridgepack": "0.0.
|
|
27
|
-
"@apps-in-toss/bridge-core": "0.0.
|
|
28
|
-
"@apps-in-toss/framework": "0.0.
|
|
26
|
+
"@apps-in-toss-internal/bridgepack": "0.0.33",
|
|
27
|
+
"@apps-in-toss/bridge-core": "0.0.33",
|
|
28
|
+
"@apps-in-toss/framework": "0.0.33",
|
|
29
29
|
"react-native-bedrock": "0.0.25",
|
|
30
30
|
"tsup": "^8.3.5",
|
|
31
31
|
"typescript": "4.9.5",
|
|
@@ -37,5 +37,5 @@
|
|
|
37
37
|
"publishConfig": {
|
|
38
38
|
"access": "public"
|
|
39
39
|
},
|
|
40
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "6b7e58eea07536c97dee1de3ae03e565c726f619"
|
|
41
41
|
}
|