@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.
@@ -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 * `getTossShareLink` 함수는 사용자가 지정한 경로를 토스 앱에서 열 수 있는 공유 링크를 반환해요.\n * 링크를 다른 사람과 공유하면 토스 앱이 실행되면서 지정한 경로로 진입해요. 토스앱이 없는 사람은 iOS 때는 앱스토어로 이동하고, Android 일 때는 플레이스토어로 이동해요.\n *\n * 경로는 토스 내부 특정 화면을 나타내는 딥링크(deep link) 형식이어야 해요.\n * 예를 들어 `intoss://<앱 이름>`이나 `intoss://<앱 이름>/about?name=test`처럼 작성해요.\n *\n * 함수를 사용하면 `deep_link_value`를 포함한 완성된 공유 링크를 만들 있어요.\n *\n * @param path - 딥링크로 열고 싶은 경로예요. `intoss://`로 시작하는 문자열이어야 해요.\n * @returns {Promise<string>} `deep_link_value`가 포함된 토스 공유 링크를 반환해요.\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 *\n * // 생성한 링크를 메시지로 공유해요.\n * await share({ message: tossLink });\n * ```\n */\nexport declare function getTossShareLink(path: string): Promise<string>;\n\nexport {};\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
- async function getTossShareLink(path) {
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
- async function appsInTossSignTossCert(params) {
1037
- const isSupported = isMinVersionSupported({
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
- * `getTossShareLink` 함수는 사용자가 지정한 경로를 토스 앱에서 열 수 있는 공유 링크를 반환해요.
2895
- * 이 링크를 다른 사람과 공유하면 토스 앱이 실행되면서 지정한 경로로 진입해요. 토스앱이 없는 사람은 iOS 일 때는 앱스토어로 이동하고, Android 일 때는 플레이스토어로 이동해요.
2896
+ * 사용자가 지정한 경로를 토스 앱에서 열 수 있는 공유 링크를 생성해요.
2896
2897
  *
2897
- * 경로는 토스 내부 특정 화면을 나타내는 딥링크(deep link) 형식이어야 해요.
2898
- * 예를 들어 `intoss://<앱 이름>`이나 `intoss://<앱 이름>/about?name=test`처럼 작성해요.
2898
+ * 생성된 링크를 다른 사람과 공유하면:
2899
+ * - 토스 앱이 설치되어 있으면: 토스 앱이 실행되면서 지정한 경로로 이동해요.
2900
+ * - 토스 앱이 없으면: iOS는 앱스토어로, Android는 플레이스토어로 이동해요.
2899
2901
  *
2900
- * 함수를 사용하면 `deep_link_value`를 포함한 완성된 공유 링크를 만들 수 있어요.
2901
- *
2902
- * @param path - 딥링크로 열고 싶은 경로예요. `intoss://`로 시작하는 문자열이어야 해요.
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
- * `getTossShareLink` 함수는 사용자가 지정한 경로를 토스 앱에서 열 수 있는 공유 링크를 반환해요.
2895
- * 이 링크를 다른 사람과 공유하면 토스 앱이 실행되면서 지정한 경로로 진입해요. 토스앱이 없는 사람은 iOS 일 때는 앱스토어로 이동하고, Android 일 때는 플레이스토어로 이동해요.
2896
+ * 사용자가 지정한 경로를 토스 앱에서 열 수 있는 공유 링크를 생성해요.
2896
2897
  *
2897
- * 경로는 토스 내부 특정 화면을 나타내는 딥링크(deep link) 형식이어야 해요.
2898
- * 예를 들어 `intoss://<앱 이름>`이나 `intoss://<앱 이름>/about?name=test`처럼 작성해요.
2898
+ * 생성된 링크를 다른 사람과 공유하면:
2899
+ * - 토스 앱이 설치되어 있으면: 토스 앱이 실행되면서 지정한 경로로 이동해요.
2900
+ * - 토스 앱이 없으면: iOS는 앱스토어로, Android는 플레이스토어로 이동해요.
2899
2901
  *
2900
- * 함수를 사용하면 `deep_link_value`를 포함한 완성된 공유 링크를 만들 수 있어요.
2901
- *
2902
- * @param path - 딥링크로 열고 싶은 경로예요. `intoss://`로 시작하는 문자열이어야 해요.
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
- async function getTossShareLink(path) {
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
- async function appsInTossSignTossCert(params) {
961
- const isSupported = isMinVersionSupported({
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.1765732023607",
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.1765732023607",
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": "e45c1308eb7d471b4873b1d92b7570e11bc85ae3"
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 isSupported = isMinVersionSupported({
38
- android: '5.233.0',
39
- ios: '5.233.0',
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
- * `getTossShareLink` 함수는 사용자가 지정한 경로를 토스 앱에서 열 수 있는 공유 링크를 반환해요.
10
- * 이 링크를 다른 사람과 공유하면 토스 앱이 실행되면서 지정한 경로로 진입해요. 토스앱이 없는 사람은 iOS 일 때는 앱스토어로 이동하고, Android 일 때는 플레이스토어로 이동해요.
11
- *
12
- * 경로는 토스 앱 내부 특정 화면을 나타내는 딥링크(deep link) 형식이어야 해요.
13
- * 예를 들어 `intoss://<앱 이름>`이나 `intoss://<앱 이름>/about?name=test`처럼 작성해요.
15
+ * 사용자가 지정한 경로를 토스 앱에서 열 수 있는 공유 링크를 생성해요.
14
16
  *
15
- * 함수를 사용하면 `deep_link_value`를 포함한 완성된 공유 링크를 만들 있어요.
17
+ * 생성된 링크를 다른 사람과 공유하면:
18
+ * - 토스 앱이 설치되어 있으면: 토스 앱이 실행되면서 지정한 경로로 이동해요.
19
+ * - 토스 앱이 없으면: iOS는 앱스토어로, Android는 플레이스토어로 이동해요.
16
20
  *
17
- * @param path - 딥링크로 열고 싶은 경로예요. `intoss://`로 시작하는 문자열이어야 해요.
18
- * @returns {Promise<string>} `deep_link_value`가 포함된 토스 공유 링크를 반환해요.
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