@apps-in-toss/native-modules 0.0.0-dev.1765732023607 → 0.0.0-dev.1765878631929
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 +2 -2
- package/dist/index.cjs +29 -4
- package/dist/index.d.cts +18 -12
- package/dist/index.d.ts +18 -12
- package/dist/index.js +29 -4
- package/package.json +3 -3
- package/src/AppsInTossModule/native-modules/appsInTossSignTossCert.ts +16 -4
- package/src/AppsInTossModule/native-modules/getTossShareLink.ts +38 -12
package/dist/bridges-meta.json
CHANGED
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
},
|
|
78
78
|
{
|
|
79
79
|
"identifier": "getTossShareLink",
|
|
80
|
-
"dts": "/**\n * @public\n * @category 공유\n * @kind function\n * @name getTossShareLink\n * @description\n *
|
|
80
|
+
"dts": "/**\n * @public\n * @category 공유\n * @kind function\n * @name getTossShareLink\n * @description\n * 사용자가 지정한 경로를 토스 앱에서 열 수 있는 공유 링크를 생성해요.\n *\n * 생성된 링크를 다른 사람과 공유하면:\n * - 토스 앱이 설치되어 있으면: 토스 앱이 실행되면서 지정한 경로로 이동해요.\n * - 토스 앱이 없으면: iOS는 앱스토어로, Android는 플레이스토어로 이동해요.\n *\n * @param path - 딥링크 경로예요. `intoss://`로 시작하는 문자열이어야 해요. (예: `intoss://my-app`, `intoss://my-app/detail?id=123`)\n * @param ogImageUrl - (선택) 공유 시 표시될 커스텀 OG 이미지 URL이에요. 최소 버전: Android 5.240.0, iOS 5.239.0\n * @returns {Promise<string>} 생성된 토스 공유 링크\n *\n * @example\n * ```tsx\n * import { share } from '@granite-js/react-native';\n * import { getTossShareLink } from '@apps-in-toss/framework';\n *\n * // 기본 사용법\n * const tossLink = await getTossShareLink('intoss://my-app');\n * await share({ message: tossLink });\n *\n * // 커스텀 OG 이미지와 함께 사용\n * const linkWithImage = await getTossShareLink(\n * 'intoss://my-app/event',\n * 'https://example.com/og-image.png'\n * );\n * await share({ message: linkWithImage });\n * ```\n */\nexport declare function getTossShareLink(path: string, ogImageUrl?: string): Promise<string>;\n\nexport {};\n"
|
|
81
81
|
},
|
|
82
82
|
{
|
|
83
83
|
"identifier": "setDeviceOrientation",
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
95
|
"identifier": "appsInTossSignTossCert",
|
|
96
|
-
"dts": "export interface AppsInTossSignTossCertParams {\n\ttxId: string;\n}\n/**\n * @public\n * @category 토스인증\n * @name appsInTossSignTossCert\n * @description 토스 인증서를 사용해 서명하는 기능을 제공해요. 이 함수를 사용하면 앱인토스에서 제공하는 인증서를 활용해 서명을 할 수 있어요.\n *\n * @param {AppsInTossSignTossCertParams} params - 서명에 필요한 파라미터를 포함하는 객체예요.\n * @param {string} params.txId - 토스인증서를 사용한 본인확인이나 간편인증, 전자서명에서 사용하는 Transaction Id예요.\n *\n * @example\n * ```tsx\n * import { appsInTossSignTossCert } from '@apps-in-toss/framework';\n *\n * // 서명에 필요한 파라미터를 정의해요.\n * const params = {\n * txId: \"f2e1a6df...\"\n * };\n *\n * appsInTossSignTossCert(params)\n * .then(() => {\n * console.log('서명 작업이 성공적으로 완료되었어요.');\n * })\n * .catch((error) => {\n * console.error('서명 작업 중 에러가 발생했어요:', error);\n * });\n * ```\n */\nexport declare function appsInTossSignTossCert(params: AppsInTossSignTossCertParams): Promise<void>;\n\nexport {};\n"
|
|
96
|
+
"dts": "export interface AppsInTossSignTossCertParams {\n\ttxId: string;\n\tskipConfirmDoc?: boolean;\n}\n/**\n * @public\n * @category 토스인증\n * @name appsInTossSignTossCert\n * @description 토스 인증서를 사용해 서명하는 기능을 제공해요. 이 함수를 사용하면 앱인토스에서 제공하는 인증서를 활용해 서명을 할 수 있어요.\n *\n * @param {AppsInTossSignTossCertParams} params - 서명에 필요한 파라미터를 포함하는 객체예요.\n * @param {string} params.txId - 토스인증서를 사용한 본인확인이나 간편인증, 전자서명에서 사용하는 Transaction Id예요.\n * @param {boolean} params.skipConfirmDoc - (선택) 토스 원터치 인증방식을 사용하기 위한 옵션이예요. true 설정 시 최소 버전: Android 5.236.0, iOS 5.236.0 (default: false)\n *\n * @example\n * ```tsx\n * import { appsInTossSignTossCert } from '@apps-in-toss/framework';\n *\n * // 서명에 필요한 파라미터를 정의해요.\n * const params = {\n * txId: \"f2e1a6df...\"\n * };\n *\n * appsInTossSignTossCert(params)\n * .then(() => {\n * console.log('서명 작업이 성공적으로 완료되었어요.');\n * })\n * .catch((error) => {\n * console.error('서명 작업 중 에러가 발생했어요:', error);\n * });\n * ```\n */\nexport declare function appsInTossSignTossCert(params: AppsInTossSignTossCertParams): Promise<void>;\n\nexport {};\n"
|
|
97
97
|
},
|
|
98
98
|
{
|
|
99
99
|
"identifier": "getGameCenterGameProfile",
|
package/dist/index.cjs
CHANGED
|
@@ -717,7 +717,24 @@ function getTossAppVersion() {
|
|
|
717
717
|
}
|
|
718
718
|
|
|
719
719
|
// src/AppsInTossModule/native-modules/getTossShareLink.ts
|
|
720
|
-
|
|
720
|
+
var V2_MIN_VERSION = {
|
|
721
|
+
android: "5.240.0",
|
|
722
|
+
ios: "5.239.0"
|
|
723
|
+
};
|
|
724
|
+
async function getTossShareLink(path, ogImageUrl) {
|
|
725
|
+
if (!isMinVersionSupported(V2_MIN_VERSION)) {
|
|
726
|
+
return await getTossShareLinkV1(path);
|
|
727
|
+
}
|
|
728
|
+
const params = {
|
|
729
|
+
params: {
|
|
730
|
+
url: path,
|
|
731
|
+
ogImageUrl
|
|
732
|
+
}
|
|
733
|
+
};
|
|
734
|
+
const { shareLink } = await AppsInTossModule.getTossShareLink(params);
|
|
735
|
+
return shareLink;
|
|
736
|
+
}
|
|
737
|
+
async function getTossShareLinkV1(path) {
|
|
721
738
|
const { shareLink } = await AppsInTossModule.getTossShareLink({});
|
|
722
739
|
const shareUrl = new URL(shareLink);
|
|
723
740
|
shareUrl.searchParams.set("deep_link_value", path);
|
|
@@ -1033,11 +1050,19 @@ function contactsViral(params) {
|
|
|
1033
1050
|
}
|
|
1034
1051
|
|
|
1035
1052
|
// src/AppsInTossModule/native-modules/appsInTossSignTossCert.ts
|
|
1036
|
-
|
|
1037
|
-
|
|
1053
|
+
var MIN_VERSION_BY_USER_TYPE = {
|
|
1054
|
+
USER_PERSONAL: {
|
|
1038
1055
|
android: "5.233.0",
|
|
1039
1056
|
ios: "5.233.0"
|
|
1040
|
-
}
|
|
1057
|
+
},
|
|
1058
|
+
USER_NONE: {
|
|
1059
|
+
android: "5.236.0",
|
|
1060
|
+
ios: "5.236.0"
|
|
1061
|
+
}
|
|
1062
|
+
};
|
|
1063
|
+
async function appsInTossSignTossCert(params) {
|
|
1064
|
+
const minVersion = params.skipConfirmDoc === true ? MIN_VERSION_BY_USER_TYPE.USER_NONE : MIN_VERSION_BY_USER_TYPE.USER_PERSONAL;
|
|
1065
|
+
const isSupported = isMinVersionSupported(minVersion);
|
|
1041
1066
|
if (!isSupported) {
|
|
1042
1067
|
console.warn("appsInTossSignTossCert is not supported in this app version");
|
|
1043
1068
|
return;
|
package/dist/index.d.cts
CHANGED
|
@@ -1351,6 +1351,7 @@ declare function checkoutPayment(options: CheckoutPaymentOptions): Promise<Check
|
|
|
1351
1351
|
|
|
1352
1352
|
interface AppsInTossSignTossCertParams {
|
|
1353
1353
|
txId: string;
|
|
1354
|
+
skipConfirmDoc?: boolean;
|
|
1354
1355
|
}
|
|
1355
1356
|
/**
|
|
1356
1357
|
* @public
|
|
@@ -1360,6 +1361,7 @@ interface AppsInTossSignTossCertParams {
|
|
|
1360
1361
|
*
|
|
1361
1362
|
* @param {AppsInTossSignTossCertParams} params - 서명에 필요한 파라미터를 포함하는 객체예요.
|
|
1362
1363
|
* @param {string} params.txId - 토스인증서를 사용한 본인확인이나 간편인증, 전자서명에서 사용하는 Transaction Id예요.
|
|
1364
|
+
* @param {boolean} params.skipConfirmDoc - (선택) 토스 원터치 인증방식을 사용하기 위한 옵션이예요. true 설정 시 최소 버전: Android 5.236.0, iOS 5.236.0 (default: false)
|
|
1363
1365
|
*
|
|
1364
1366
|
* @example
|
|
1365
1367
|
* ```tsx
|
|
@@ -2891,30 +2893,34 @@ declare function getTossAppVersion(): string;
|
|
|
2891
2893
|
* @kind function
|
|
2892
2894
|
* @name getTossShareLink
|
|
2893
2895
|
* @description
|
|
2894
|
-
*
|
|
2895
|
-
* 이 링크를 다른 사람과 공유하면 토스 앱이 실행되면서 지정한 경로로 진입해요. 토스앱이 없는 사람은 iOS 일 때는 앱스토어로 이동하고, Android 일 때는 플레이스토어로 이동해요.
|
|
2896
|
+
* 사용자가 지정한 경로를 토스 앱에서 열 수 있는 공유 링크를 생성해요.
|
|
2896
2897
|
*
|
|
2897
|
-
*
|
|
2898
|
-
*
|
|
2898
|
+
* 생성된 링크를 다른 사람과 공유하면:
|
|
2899
|
+
* - 토스 앱이 설치되어 있으면: 토스 앱이 실행되면서 지정한 경로로 이동해요.
|
|
2900
|
+
* - 토스 앱이 없으면: iOS는 앱스토어로, Android는 플레이스토어로 이동해요.
|
|
2899
2901
|
*
|
|
2900
|
-
*
|
|
2901
|
-
*
|
|
2902
|
-
* @
|
|
2903
|
-
* @returns {Promise<string>} `deep_link_value`가 포함된 토스 공유 링크를 반환해요.
|
|
2902
|
+
* @param path - 딥링크 경로예요. `intoss://`로 시작하는 문자열이어야 해요. (예: `intoss://my-app`, `intoss://my-app/detail?id=123`)
|
|
2903
|
+
* @param ogImageUrl - (선택) 공유 시 표시될 커스텀 OG 이미지 URL이에요. 최소 버전: Android 5.240.0, iOS 5.239.0
|
|
2904
|
+
* @returns {Promise<string>} 생성된 토스 공유 링크
|
|
2904
2905
|
*
|
|
2905
2906
|
* @example
|
|
2906
2907
|
* ```tsx
|
|
2907
2908
|
* import { share } from '@granite-js/react-native';
|
|
2908
2909
|
* import { getTossShareLink } from '@apps-in-toss/framework';
|
|
2909
2910
|
*
|
|
2910
|
-
* //
|
|
2911
|
+
* // 기본 사용법
|
|
2911
2912
|
* const tossLink = await getTossShareLink('intoss://my-app');
|
|
2912
|
-
*
|
|
2913
|
-
* // 생성한 링크를 메시지로 공유해요.
|
|
2914
2913
|
* await share({ message: tossLink });
|
|
2914
|
+
*
|
|
2915
|
+
* // 커스텀 OG 이미지와 함께 사용
|
|
2916
|
+
* const linkWithImage = await getTossShareLink(
|
|
2917
|
+
* 'intoss://my-app/event',
|
|
2918
|
+
* 'https://example.com/og-image.png'
|
|
2919
|
+
* );
|
|
2920
|
+
* await share({ message: linkWithImage });
|
|
2915
2921
|
* ```
|
|
2916
2922
|
*/
|
|
2917
|
-
declare function getTossShareLink(path: string): Promise<string>;
|
|
2923
|
+
declare function getTossShareLink(path: string, ogImageUrl?: string): Promise<string>;
|
|
2918
2924
|
|
|
2919
2925
|
/**
|
|
2920
2926
|
* @public
|
package/dist/index.d.ts
CHANGED
|
@@ -1351,6 +1351,7 @@ declare function checkoutPayment(options: CheckoutPaymentOptions): Promise<Check
|
|
|
1351
1351
|
|
|
1352
1352
|
interface AppsInTossSignTossCertParams {
|
|
1353
1353
|
txId: string;
|
|
1354
|
+
skipConfirmDoc?: boolean;
|
|
1354
1355
|
}
|
|
1355
1356
|
/**
|
|
1356
1357
|
* @public
|
|
@@ -1360,6 +1361,7 @@ interface AppsInTossSignTossCertParams {
|
|
|
1360
1361
|
*
|
|
1361
1362
|
* @param {AppsInTossSignTossCertParams} params - 서명에 필요한 파라미터를 포함하는 객체예요.
|
|
1362
1363
|
* @param {string} params.txId - 토스인증서를 사용한 본인확인이나 간편인증, 전자서명에서 사용하는 Transaction Id예요.
|
|
1364
|
+
* @param {boolean} params.skipConfirmDoc - (선택) 토스 원터치 인증방식을 사용하기 위한 옵션이예요. true 설정 시 최소 버전: Android 5.236.0, iOS 5.236.0 (default: false)
|
|
1363
1365
|
*
|
|
1364
1366
|
* @example
|
|
1365
1367
|
* ```tsx
|
|
@@ -2891,30 +2893,34 @@ declare function getTossAppVersion(): string;
|
|
|
2891
2893
|
* @kind function
|
|
2892
2894
|
* @name getTossShareLink
|
|
2893
2895
|
* @description
|
|
2894
|
-
*
|
|
2895
|
-
* 이 링크를 다른 사람과 공유하면 토스 앱이 실행되면서 지정한 경로로 진입해요. 토스앱이 없는 사람은 iOS 일 때는 앱스토어로 이동하고, Android 일 때는 플레이스토어로 이동해요.
|
|
2896
|
+
* 사용자가 지정한 경로를 토스 앱에서 열 수 있는 공유 링크를 생성해요.
|
|
2896
2897
|
*
|
|
2897
|
-
*
|
|
2898
|
-
*
|
|
2898
|
+
* 생성된 링크를 다른 사람과 공유하면:
|
|
2899
|
+
* - 토스 앱이 설치되어 있으면: 토스 앱이 실행되면서 지정한 경로로 이동해요.
|
|
2900
|
+
* - 토스 앱이 없으면: iOS는 앱스토어로, Android는 플레이스토어로 이동해요.
|
|
2899
2901
|
*
|
|
2900
|
-
*
|
|
2901
|
-
*
|
|
2902
|
-
* @
|
|
2903
|
-
* @returns {Promise<string>} `deep_link_value`가 포함된 토스 공유 링크를 반환해요.
|
|
2902
|
+
* @param path - 딥링크 경로예요. `intoss://`로 시작하는 문자열이어야 해요. (예: `intoss://my-app`, `intoss://my-app/detail?id=123`)
|
|
2903
|
+
* @param ogImageUrl - (선택) 공유 시 표시될 커스텀 OG 이미지 URL이에요. 최소 버전: Android 5.240.0, iOS 5.239.0
|
|
2904
|
+
* @returns {Promise<string>} 생성된 토스 공유 링크
|
|
2904
2905
|
*
|
|
2905
2906
|
* @example
|
|
2906
2907
|
* ```tsx
|
|
2907
2908
|
* import { share } from '@granite-js/react-native';
|
|
2908
2909
|
* import { getTossShareLink } from '@apps-in-toss/framework';
|
|
2909
2910
|
*
|
|
2910
|
-
* //
|
|
2911
|
+
* // 기본 사용법
|
|
2911
2912
|
* const tossLink = await getTossShareLink('intoss://my-app');
|
|
2912
|
-
*
|
|
2913
|
-
* // 생성한 링크를 메시지로 공유해요.
|
|
2914
2913
|
* await share({ message: tossLink });
|
|
2914
|
+
*
|
|
2915
|
+
* // 커스텀 OG 이미지와 함께 사용
|
|
2916
|
+
* const linkWithImage = await getTossShareLink(
|
|
2917
|
+
* 'intoss://my-app/event',
|
|
2918
|
+
* 'https://example.com/og-image.png'
|
|
2919
|
+
* );
|
|
2920
|
+
* await share({ message: linkWithImage });
|
|
2915
2921
|
* ```
|
|
2916
2922
|
*/
|
|
2917
|
-
declare function getTossShareLink(path: string): Promise<string>;
|
|
2923
|
+
declare function getTossShareLink(path: string, ogImageUrl?: string): Promise<string>;
|
|
2918
2924
|
|
|
2919
2925
|
/**
|
|
2920
2926
|
* @public
|
package/dist/index.js
CHANGED
|
@@ -641,7 +641,24 @@ function getTossAppVersion() {
|
|
|
641
641
|
}
|
|
642
642
|
|
|
643
643
|
// src/AppsInTossModule/native-modules/getTossShareLink.ts
|
|
644
|
-
|
|
644
|
+
var V2_MIN_VERSION = {
|
|
645
|
+
android: "5.240.0",
|
|
646
|
+
ios: "5.239.0"
|
|
647
|
+
};
|
|
648
|
+
async function getTossShareLink(path, ogImageUrl) {
|
|
649
|
+
if (!isMinVersionSupported(V2_MIN_VERSION)) {
|
|
650
|
+
return await getTossShareLinkV1(path);
|
|
651
|
+
}
|
|
652
|
+
const params = {
|
|
653
|
+
params: {
|
|
654
|
+
url: path,
|
|
655
|
+
ogImageUrl
|
|
656
|
+
}
|
|
657
|
+
};
|
|
658
|
+
const { shareLink } = await AppsInTossModule.getTossShareLink(params);
|
|
659
|
+
return shareLink;
|
|
660
|
+
}
|
|
661
|
+
async function getTossShareLinkV1(path) {
|
|
645
662
|
const { shareLink } = await AppsInTossModule.getTossShareLink({});
|
|
646
663
|
const shareUrl = new URL(shareLink);
|
|
647
664
|
shareUrl.searchParams.set("deep_link_value", path);
|
|
@@ -957,11 +974,19 @@ function contactsViral(params) {
|
|
|
957
974
|
}
|
|
958
975
|
|
|
959
976
|
// src/AppsInTossModule/native-modules/appsInTossSignTossCert.ts
|
|
960
|
-
|
|
961
|
-
|
|
977
|
+
var MIN_VERSION_BY_USER_TYPE = {
|
|
978
|
+
USER_PERSONAL: {
|
|
962
979
|
android: "5.233.0",
|
|
963
980
|
ios: "5.233.0"
|
|
964
|
-
}
|
|
981
|
+
},
|
|
982
|
+
USER_NONE: {
|
|
983
|
+
android: "5.236.0",
|
|
984
|
+
ios: "5.236.0"
|
|
985
|
+
}
|
|
986
|
+
};
|
|
987
|
+
async function appsInTossSignTossCert(params) {
|
|
988
|
+
const minVersion = params.skipConfirmDoc === true ? MIN_VERSION_BY_USER_TYPE.USER_NONE : MIN_VERSION_BY_USER_TYPE.USER_PERSONAL;
|
|
989
|
+
const isSupported = isMinVersionSupported(minVersion);
|
|
965
990
|
if (!isSupported) {
|
|
966
991
|
console.warn("appsInTossSignTossCert is not supported in this app version");
|
|
967
992
|
return;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apps-in-toss/native-modules",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.0-dev.
|
|
4
|
+
"version": "0.0.0-dev.1765878631929",
|
|
5
5
|
"description": "Native Modules for Apps In Toss",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"prepack": "yarn build",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"vitest": "^3.2.4"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@apps-in-toss/types": "^0.0.0-dev.
|
|
46
|
+
"@apps-in-toss/types": "^0.0.0-dev.1765878631929",
|
|
47
47
|
"es-toolkit": "^1.39.3"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
@@ -54,5 +54,5 @@
|
|
|
54
54
|
"publishConfig": {
|
|
55
55
|
"access": "public"
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "f54ad0a6526e1b4752239cb0670dedbab5170c67"
|
|
58
58
|
}
|
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
import { AppsInTossModule } from './AppsInTossModule';
|
|
2
2
|
import { isMinVersionSupported } from './isMinVersionSupported';
|
|
3
3
|
|
|
4
|
+
const MIN_VERSION_BY_USER_TYPE = {
|
|
5
|
+
USER_PERSONAL: {
|
|
6
|
+
android: '5.233.0',
|
|
7
|
+
ios: '5.233.0',
|
|
8
|
+
},
|
|
9
|
+
USER_NONE: {
|
|
10
|
+
android: '5.236.0',
|
|
11
|
+
ios: '5.236.0',
|
|
12
|
+
},
|
|
13
|
+
} as const;
|
|
14
|
+
|
|
4
15
|
export interface AppsInTossSignTossCertParams {
|
|
5
16
|
txId: string;
|
|
17
|
+
skipConfirmDoc?: boolean;
|
|
6
18
|
}
|
|
7
19
|
|
|
8
20
|
/**
|
|
@@ -13,6 +25,7 @@ export interface AppsInTossSignTossCertParams {
|
|
|
13
25
|
*
|
|
14
26
|
* @param {AppsInTossSignTossCertParams} params - 서명에 필요한 파라미터를 포함하는 객체예요.
|
|
15
27
|
* @param {string} params.txId - 토스인증서를 사용한 본인확인이나 간편인증, 전자서명에서 사용하는 Transaction Id예요.
|
|
28
|
+
* @param {boolean} params.skipConfirmDoc - (선택) 토스 원터치 인증방식을 사용하기 위한 옵션이예요. true 설정 시 최소 버전: Android 5.236.0, iOS 5.236.0 (default: false)
|
|
16
29
|
*
|
|
17
30
|
* @example
|
|
18
31
|
* ```tsx
|
|
@@ -34,10 +47,9 @@ export interface AppsInTossSignTossCertParams {
|
|
|
34
47
|
*/
|
|
35
48
|
|
|
36
49
|
export async function appsInTossSignTossCert(params: AppsInTossSignTossCertParams) {
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
});
|
|
50
|
+
const minVersion =
|
|
51
|
+
params.skipConfirmDoc === true ? MIN_VERSION_BY_USER_TYPE.USER_NONE : MIN_VERSION_BY_USER_TYPE.USER_PERSONAL;
|
|
52
|
+
const isSupported = isMinVersionSupported(minVersion);
|
|
41
53
|
|
|
42
54
|
if (!isSupported) {
|
|
43
55
|
console.warn('appsInTossSignTossCert is not supported in this app version');
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { AppsInTossModule } from './AppsInTossModule';
|
|
2
|
+
import { isMinVersionSupported } from './isMinVersionSupported';
|
|
3
|
+
|
|
4
|
+
const V2_MIN_VERSION = {
|
|
5
|
+
android: '5.240.0',
|
|
6
|
+
ios: '5.239.0',
|
|
7
|
+
} as const;
|
|
2
8
|
|
|
3
9
|
/**
|
|
4
10
|
* @public
|
|
@@ -6,30 +12,50 @@ import { AppsInTossModule } from './AppsInTossModule';
|
|
|
6
12
|
* @kind function
|
|
7
13
|
* @name getTossShareLink
|
|
8
14
|
* @description
|
|
9
|
-
*
|
|
10
|
-
* 이 링크를 다른 사람과 공유하면 토스 앱이 실행되면서 지정한 경로로 진입해요. 토스앱이 없는 사람은 iOS 일 때는 앱스토어로 이동하고, Android 일 때는 플레이스토어로 이동해요.
|
|
11
|
-
*
|
|
12
|
-
* 경로는 토스 앱 내부 특정 화면을 나타내는 딥링크(deep link) 형식이어야 해요.
|
|
13
|
-
* 예를 들어 `intoss://<앱 이름>`이나 `intoss://<앱 이름>/about?name=test`처럼 작성해요.
|
|
15
|
+
* 사용자가 지정한 경로를 토스 앱에서 열 수 있는 공유 링크를 생성해요.
|
|
14
16
|
*
|
|
15
|
-
*
|
|
17
|
+
* 생성된 링크를 다른 사람과 공유하면:
|
|
18
|
+
* - 토스 앱이 설치되어 있으면: 토스 앱이 실행되면서 지정한 경로로 이동해요.
|
|
19
|
+
* - 토스 앱이 없으면: iOS는 앱스토어로, Android는 플레이스토어로 이동해요.
|
|
16
20
|
*
|
|
17
|
-
* @param path -
|
|
18
|
-
* @
|
|
21
|
+
* @param path - 딥링크 경로예요. `intoss://`로 시작하는 문자열이어야 해요. (예: `intoss://my-app`, `intoss://my-app/detail?id=123`)
|
|
22
|
+
* @param ogImageUrl - (선택) 공유 시 표시될 커스텀 OG 이미지 URL이에요. 최소 버전: Android 5.240.0, iOS 5.239.0
|
|
23
|
+
* @returns {Promise<string>} 생성된 토스 공유 링크
|
|
19
24
|
*
|
|
20
25
|
* @example
|
|
21
26
|
* ```tsx
|
|
22
27
|
* import { share } from '@granite-js/react-native';
|
|
23
28
|
* import { getTossShareLink } from '@apps-in-toss/framework';
|
|
24
29
|
*
|
|
25
|
-
* //
|
|
30
|
+
* // 기본 사용법
|
|
26
31
|
* const tossLink = await getTossShareLink('intoss://my-app');
|
|
27
|
-
*
|
|
28
|
-
* // 생성한 링크를 메시지로 공유해요.
|
|
29
32
|
* await share({ message: tossLink });
|
|
33
|
+
*
|
|
34
|
+
* // 커스텀 OG 이미지와 함께 사용
|
|
35
|
+
* const linkWithImage = await getTossShareLink(
|
|
36
|
+
* 'intoss://my-app/event',
|
|
37
|
+
* 'https://example.com/og-image.png'
|
|
38
|
+
* );
|
|
39
|
+
* await share({ message: linkWithImage });
|
|
30
40
|
* ```
|
|
31
41
|
*/
|
|
32
|
-
export async function getTossShareLink(path: string): Promise<string> {
|
|
42
|
+
export async function getTossShareLink(path: string, ogImageUrl?: string): Promise<string> {
|
|
43
|
+
if (!isMinVersionSupported(V2_MIN_VERSION)) {
|
|
44
|
+
return await getTossShareLinkV1(path);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const params = {
|
|
48
|
+
params: {
|
|
49
|
+
url: path,
|
|
50
|
+
ogImageUrl,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const { shareLink } = await AppsInTossModule.getTossShareLink(params);
|
|
55
|
+
return shareLink;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async function getTossShareLinkV1(path: string): Promise<string> {
|
|
33
59
|
const { shareLink } = await AppsInTossModule.getTossShareLink({});
|
|
34
60
|
const shareUrl = new URL(shareLink);
|
|
35
61
|
|