@apps-in-toss/native-modules 0.0.0-dev.1752115036458 → 0.0.0-dev.1757056983098
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/dist/bridges-meta.json +36 -13
- package/dist/index.cjs +343 -129
- package/dist/index.d.cts +1212 -418
- package/dist/index.d.ts +1212 -418
- package/dist/index.js +315 -108
- package/package.json +7 -8
- package/src/AppsInTossModule/constants.ts +6 -0
- package/src/AppsInTossModule/native-event-emitter/appsInTossEvent.ts +15 -0
- package/src/AppsInTossModule/native-event-emitter/contactsViral.ts +140 -0
- package/src/AppsInTossModule/native-event-emitter/event-plugins/EntryMessageExitedEvent.ts +10 -0
- package/src/AppsInTossModule/native-event-emitter/event-plugins/HomeIconButtonClickHandleEvent.ts +10 -0
- package/src/AppsInTossModule/native-event-emitter/event-plugins/UpdateLocationEvent.ts +60 -0
- package/src/AppsInTossModule/native-event-emitter/index.ts +6 -0
- package/src/AppsInTossModule/native-event-emitter/internal/AppBridgeCallbackEvent.ts +45 -0
- package/src/AppsInTossModule/native-event-emitter/internal/VisibilityChangedByTransparentServiceWebEvent.ts +50 -0
- package/src/AppsInTossModule/native-event-emitter/internal/appBridge.spec.ts +135 -0
- package/src/AppsInTossModule/native-event-emitter/internal/appBridge.ts +79 -0
- package/src/AppsInTossModule/native-event-emitter/internal/onVisibilityChangedByTransparentServiceWeb.ts +20 -0
- package/src/AppsInTossModule/native-event-emitter/nativeEventEmitter.ts +35 -0
- package/src/AppsInTossModule/native-event-emitter/startUpdateLocation.ts +98 -0
- package/src/AppsInTossModule/native-event-emitter/types.ts +4 -0
- package/src/AppsInTossModule/native-modules/AppsInTossModule.ts +89 -0
- package/src/AppsInTossModule/native-modules/ads/googleAdMob.ts +681 -0
- package/src/AppsInTossModule/native-modules/ads/googleAdMobV2.ts +363 -0
- package/src/AppsInTossModule/native-modules/ads/types.ts +123 -0
- package/src/AppsInTossModule/native-modules/appLogin.ts +29 -0
- package/src/AppsInTossModule/native-modules/checkoutPayment.ts +80 -0
- package/src/AppsInTossModule/native-modules/eventLog.spec.ts +300 -0
- package/src/AppsInTossModule/native-modules/eventLog.ts +77 -0
- package/src/AppsInTossModule/native-modules/fetchAlbumPhotos.ts +88 -0
- package/src/AppsInTossModule/native-modules/fetchContacts.ts +121 -0
- package/src/AppsInTossModule/native-modules/getClipboardText.ts +47 -0
- package/src/AppsInTossModule/native-modules/getCurrentLocation.ts +65 -0
- package/src/AppsInTossModule/native-modules/getDeviceId.ts +33 -0
- package/src/AppsInTossModule/native-modules/getGameCenterGameProfile.ts +68 -0
- package/src/AppsInTossModule/native-modules/getOperationalEnvironment.ts +37 -0
- package/src/AppsInTossModule/native-modules/getPermission.ts +58 -0
- package/src/AppsInTossModule/native-modules/getTossAppVersion.ts +33 -0
- package/src/AppsInTossModule/native-modules/getTossShareLink.ts +39 -0
- package/src/AppsInTossModule/native-modules/iap.ts +213 -0
- package/src/AppsInTossModule/native-modules/index.ts +104 -0
- package/src/AppsInTossModule/native-modules/isMinVersionSupported.spec.ts +190 -0
- package/src/AppsInTossModule/native-modules/isMinVersionSupported.ts +68 -0
- package/src/AppsInTossModule/native-modules/openCamera.ts +81 -0
- package/src/AppsInTossModule/native-modules/openGameCenterLeaderboard.ts +44 -0
- package/src/AppsInTossModule/native-modules/openPermissionDialog.ts +54 -0
- package/src/AppsInTossModule/native-modules/requestPermission.ts +63 -0
- package/src/AppsInTossModule/native-modules/saveBase64Data.ts +57 -0
- package/src/AppsInTossModule/native-modules/setClipboardText.ts +39 -0
- package/src/AppsInTossModule/native-modules/setDeviceOrientation.ts +74 -0
- package/src/AppsInTossModule/native-modules/storage.ts +100 -0
- package/src/AppsInTossModule/native-modules/submitGameCenterLeaderBoardScore.ts +74 -0
- package/src/AppsInTossModule/native-modules/tossCore.ts +29 -0
- package/src/BedrockModule/native-modules/core/BedrockCoreModule.ts +8 -0
- package/src/BedrockModule/native-modules/index.ts +4 -0
- package/src/BedrockModule/native-modules/natives/BedrockModule.ts +20 -0
- package/src/BedrockModule/native-modules/natives/closeView.ts +25 -0
- package/src/BedrockModule/native-modules/natives/generateHapticFeedback/index.ts +27 -0
- package/src/BedrockModule/native-modules/natives/generateHapticFeedback/types.ts +38 -0
- package/src/BedrockModule/native-modules/natives/getLocale.ts +46 -0
- package/src/BedrockModule/native-modules/natives/getNetworkStatus/index.ts +59 -0
- package/src/BedrockModule/native-modules/natives/getNetworkStatus/types.ts +1 -0
- package/src/BedrockModule/native-modules/natives/getPlatformOS.ts +37 -0
- package/src/BedrockModule/native-modules/natives/getSchemeUri.ts +27 -0
- package/src/BedrockModule/native-modules/natives/index.ts +11 -0
- package/src/BedrockModule/native-modules/natives/openURL.ts +40 -0
- package/src/BedrockModule/native-modules/natives/setIosSwipeGestureEnabled.ts +43 -0
- package/src/BedrockModule/native-modules/natives/setScreenAwakeMode.ts +66 -0
- package/src/BedrockModule/native-modules/natives/setSecureScreen.ts +31 -0
- package/src/BedrockModule/native-modules/natives/share.ts +36 -0
- package/src/async-bridges.ts +3 -0
- package/src/event-bridges.ts +2 -0
- package/src/index.ts +16 -0
- package/src/types.ts +108 -0
- package/src/utils/compareVersion.spec.ts +176 -0
- package/src/utils/compareVersion.ts +104 -0
- package/src/utils/generateUUID.ts +5 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import type { EmitterSubscription } from 'react-native';
|
|
2
|
+
import { appsInTossEvent } from './appsInTossEvent';
|
|
3
|
+
import type { EventEmitterSchema } from './types';
|
|
4
|
+
import type { Accuracy, Location } from '../../types';
|
|
5
|
+
|
|
6
|
+
export interface StartUpdateLocationOptions {
|
|
7
|
+
/**
|
|
8
|
+
* 위치 정확도를 설정해요.
|
|
9
|
+
*/
|
|
10
|
+
accuracy: Accuracy;
|
|
11
|
+
/**
|
|
12
|
+
* 위치 업데이트 주기를 밀리초(ms) 단위로 설정해요.
|
|
13
|
+
*/
|
|
14
|
+
timeInterval: number;
|
|
15
|
+
/**
|
|
16
|
+
* 위치 변경 거리를 미터(m) 단위로 설정해요.
|
|
17
|
+
*/
|
|
18
|
+
distanceInterval: number;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface StartUpdateLocationSubscription extends EmitterSubscription {
|
|
22
|
+
remove: () => Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @name UpdateLocationEventEmitter
|
|
27
|
+
* @kind typedef
|
|
28
|
+
* @description
|
|
29
|
+
* 디바이스의 위치 정보 변경을 감지해요
|
|
30
|
+
*/
|
|
31
|
+
export type UpdateLocationEventEmitter = EventEmitterSchema<'updateLocation', [Location]>;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @public
|
|
35
|
+
* @category 위치 정보
|
|
36
|
+
* @name startUpdateLocation
|
|
37
|
+
* @description 디바이스의 위치 정보를 지속적으로 감지하고, 위치가 변경되면 콜백을 실행하는 함수예요. 콜백 함수를 등록하면 위치가 변경될 때마다 자동으로 호출돼요.
|
|
38
|
+
* 실시간 위치 추적이 필요한 기능을 구현할 때 사용할 수 있어요. 예를 들어 지도 앱에서 사용자의 현재 위치를 실시간으로 업데이트할 때, 운동 앱에서 사용자의 이동 거리를 기록할 때 등이에요.
|
|
39
|
+
* 위치 업데이트 주기와 정확도를 조정해 배터리 소모를 최소화하면서도 필요한 정보를 얻을 수 있어요.
|
|
40
|
+
*
|
|
41
|
+
* @param {StartUpdateLocationOptions} options - 위치 정보 감지에 필요한 설정 객체에요.
|
|
42
|
+
* @param {number} [options.accuracy] 위치 정확도를 설정해요.
|
|
43
|
+
* @param {number} [options.timeInterval] 위치 정보를 업데이트하는 최소 주기로, 단위는 밀리초(ms)예요. 이 값은 위치 업데이트가 발생하는 가장 짧은 간격을 설정하지만, 시스템이나 환경의 영향을 받아 지정한 주기보다 더 긴 간격으로 업데이트될 수 있어요.
|
|
44
|
+
* @param {number} [options.distanceInterval] 위치 변경 거리를 미터(m) 단위로 설정해요.
|
|
45
|
+
* @param {(location: Location) => void} [options.callback] 위치 정보가 변경될 때 호출되는 콜백 함수예요. 자세한 내용은 [Location](/react-native/reference/native-modules/Types/Location.html)을 참고해주세요.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ### 위치 정보 변경 감지하기
|
|
49
|
+
*
|
|
50
|
+
* ```tsx
|
|
51
|
+
* import React, { useState, useEffect } from 'react';
|
|
52
|
+
* import { View, Text, Button } from 'react-native';
|
|
53
|
+
* import { startUpdateLocation } from '@apps-in-toss/framework';
|
|
54
|
+
*
|
|
55
|
+
* // 위치 정보 변경 감지하기
|
|
56
|
+
* function LocationWatcher() {
|
|
57
|
+
* const [location, setLocation] = useState(null);
|
|
58
|
+
*
|
|
59
|
+
* useEffect(() => {
|
|
60
|
+
* return startUpdateLocation({
|
|
61
|
+
* options: {
|
|
62
|
+
* accuracy: Accuracy.Balanced,
|
|
63
|
+
* timeInterval: 3000,
|
|
64
|
+
* distanceInterval: 10,
|
|
65
|
+
* },
|
|
66
|
+
* onEvent: (location) => {
|
|
67
|
+
* setLocation(location);
|
|
68
|
+
* },
|
|
69
|
+
* onError: (error) => {
|
|
70
|
+
* console.error('위치 정보를 가져오는데 실패했어요:', error);
|
|
71
|
+
* },
|
|
72
|
+
* });
|
|
73
|
+
* }, []);
|
|
74
|
+
*
|
|
75
|
+
* if (location == null) {
|
|
76
|
+
* return <Text>위치 정보를 가져오는 중이에요...</Text>;
|
|
77
|
+
* }
|
|
78
|
+
*
|
|
79
|
+
* return (
|
|
80
|
+
* <View>
|
|
81
|
+
* <Text>위도: {location.coords.latitude}</Text>
|
|
82
|
+
* <Text>경도: {location.coords.longitude}</Text>
|
|
83
|
+
* <Text>위치 정확도: {location.coords.accuracy}m</Text>
|
|
84
|
+
* <Text>높이: {location.coords.altitude}m</Text>
|
|
85
|
+
* <Text>고도 정확도: {location.coords.altitudeAccuracy}m</Text>
|
|
86
|
+
* <Text>방향: {location.coords.heading}°</Text>
|
|
87
|
+
* </View>
|
|
88
|
+
* );
|
|
89
|
+
* }
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export function startUpdateLocation(eventParams: {
|
|
93
|
+
onEvent: (response: Location) => void;
|
|
94
|
+
onError: (error: unknown) => void;
|
|
95
|
+
options: StartUpdateLocationOptions;
|
|
96
|
+
}): () => void {
|
|
97
|
+
return appsInTossEvent.addEventListener('updateLocationEvent', eventParams);
|
|
98
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { TurboModuleRegistry, type TurboModule as __TurboModule } from 'react-native';
|
|
2
|
+
import type { CheckoutPaymentOptions, CheckoutPaymentResult } from './checkoutPayment';
|
|
3
|
+
import type { FetchAlbumPhotosOptions } from './fetchAlbumPhotos';
|
|
4
|
+
import type { ContactEntity } from './fetchContacts';
|
|
5
|
+
import type { GetCurrentLocationOptions } from './getCurrentLocation';
|
|
6
|
+
import type { GameCenterGameProfileResponse } from './getGameCenterGameProfile';
|
|
7
|
+
import type {
|
|
8
|
+
IapCreateOneTimePurchaseOrderOptions,
|
|
9
|
+
IapCreateOneTimePurchaseOrderResult,
|
|
10
|
+
IapProductListItem,
|
|
11
|
+
} from './iap';
|
|
12
|
+
import type { OpenCameraOptions } from './openCamera';
|
|
13
|
+
import type { SaveBase64DataParams } from './saveBase64Data';
|
|
14
|
+
import type { SubmitGameCenterLeaderBoardScoreResponse } from './submitGameCenterLeaderBoardScore';
|
|
15
|
+
import type { ImageResponse, Location, PermissionAccess, PermissionName, PermissionStatus } from '../../types';
|
|
16
|
+
import type { ContactsViralParams } from '../native-event-emitter/contactsViral';
|
|
17
|
+
|
|
18
|
+
type CompatiblePlaceholderArgument = object;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* TurboModule 타입 별칭 사용하는 이유?
|
|
22
|
+
* React Native Codegen 에 의해 코드젠 되는 것이 아니라 추후 내부 모듈 체계에 의해 처리될 것이기 때문에 RN Codegen에 본 파일을 코드젠 하지 않도록 함
|
|
23
|
+
* (코드젠 내부에서 "extends TurboModule" 문자열을 찾기 때문에 패턴에 매칭되지 않도록 함)
|
|
24
|
+
*/
|
|
25
|
+
interface Spec extends __TurboModule {
|
|
26
|
+
groupId: string;
|
|
27
|
+
operationalEnvironment: 'sandbox' | 'toss';
|
|
28
|
+
tossAppVersion: string;
|
|
29
|
+
deviceId: string;
|
|
30
|
+
getWebBundleURL: (arg: CompatiblePlaceholderArgument) => { url: string };
|
|
31
|
+
getClipboardText: (arg: CompatiblePlaceholderArgument) => Promise<string>;
|
|
32
|
+
setClipboardText: (option: { text: string }) => Promise<void>;
|
|
33
|
+
getPermission: (permission: { name: PermissionName; access: PermissionAccess }) => Promise<PermissionStatus>;
|
|
34
|
+
openPermissionDialog: (permission: {
|
|
35
|
+
name: PermissionName;
|
|
36
|
+
access: PermissionAccess;
|
|
37
|
+
}) => Promise<Exclude<PermissionStatus, 'notDetermined'>>;
|
|
38
|
+
fetchContacts: ({
|
|
39
|
+
size,
|
|
40
|
+
offset,
|
|
41
|
+
query,
|
|
42
|
+
}: {
|
|
43
|
+
size: number;
|
|
44
|
+
offset: number;
|
|
45
|
+
query?: {
|
|
46
|
+
contains?: string;
|
|
47
|
+
};
|
|
48
|
+
}) => Promise<{
|
|
49
|
+
result: ContactEntity[];
|
|
50
|
+
nextOffset: number | undefined;
|
|
51
|
+
done: boolean;
|
|
52
|
+
}>;
|
|
53
|
+
fetchAlbumPhotos: (options: FetchAlbumPhotosOptions) => Promise<ImageResponse[]>;
|
|
54
|
+
getCurrentLocation: (options: GetCurrentLocationOptions) => Promise<Location>;
|
|
55
|
+
openCamera: (options: OpenCameraOptions) => Promise<ImageResponse>;
|
|
56
|
+
appLogin: (
|
|
57
|
+
arg: CompatiblePlaceholderArgument
|
|
58
|
+
) => Promise<{ authorizationCode: string; referrer: 'DEFAULT' | 'SANDBOX' }>;
|
|
59
|
+
checkoutPayment: (options: { params: CheckoutPaymentOptions }) => Promise<CheckoutPaymentResult>;
|
|
60
|
+
|
|
61
|
+
/** Storage */
|
|
62
|
+
getStorageItem: (params: { key: string }) => Promise<string | null>;
|
|
63
|
+
setStorageItem: (params: { key: string; value: string }) => Promise<void>;
|
|
64
|
+
removeStorageItem: (params: { key: string }) => Promise<void>;
|
|
65
|
+
clearStorage: (arg: CompatiblePlaceholderArgument) => Promise<void>;
|
|
66
|
+
eventLog: (params: {
|
|
67
|
+
log_name: string;
|
|
68
|
+
log_type: 'debug' | 'info' | 'warn' | 'error' | 'screen' | 'impression' | 'click';
|
|
69
|
+
params: Record<string, string>;
|
|
70
|
+
}) => Promise<void>;
|
|
71
|
+
getTossShareLink: (params: object) => Promise<{ shareLink: string }>;
|
|
72
|
+
setDeviceOrientation: (options: { type: 'portrait' | 'landscape' }) => Promise<void>;
|
|
73
|
+
saveBase64Data: (params: SaveBase64DataParams) => Promise<void>;
|
|
74
|
+
|
|
75
|
+
/** IAP */
|
|
76
|
+
iapCreateOneTimePurchaseOrder: (
|
|
77
|
+
params: IapCreateOneTimePurchaseOrderOptions
|
|
78
|
+
) => Promise<IapCreateOneTimePurchaseOrderResult>;
|
|
79
|
+
iapGetProductItemList: (arg: CompatiblePlaceholderArgument) => Promise<{ products: IapProductListItem[] }>;
|
|
80
|
+
getGameCenterGameProfile: (params: CompatiblePlaceholderArgument) => Promise<GameCenterGameProfileResponse>;
|
|
81
|
+
submitGameCenterLeaderBoardScore: (params: { score: string }) => Promise<SubmitGameCenterLeaderBoardScoreResponse>;
|
|
82
|
+
|
|
83
|
+
contactsViral: (params: ContactsViralParams) => () => void;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const Module = TurboModuleRegistry.getEnforcing<Spec>('AppsInTossModule');
|
|
87
|
+
|
|
88
|
+
export const AppsInTossModuleInstance = Module as any;
|
|
89
|
+
export const AppsInTossModule = Module;
|