웹 기반 미니앱에서 초대/공유 링크를 어떻게 만들어야 하나요?

이 글의 성격은 무엇인가요?

질문 / 문제 해결

내용을 설명해주세요

안녕하세요. 웹뷰 기반(Vite+React, @apps-in-toss/web-framework) 미니앱을 개발 중입니다.

초대 링크를 토스 앱 안에서만 열리는 딥링크로 만들고 싶어서 공식 문서(getTossShareLink)를 참고했는데, 문서에는 @apps-in-toss/web-framework에서 import해서 쓸 수 있다고 나와 있지만, 실제 패키지(설치된 2.10.4, 최신 2.10.6 둘 다 확인)의 dist-web/index.d.ts 공개 export 목록에는 이 함수가 빠져 있어서 import { getTossShareLink } from '@apps-in-toss/web-framework’가 안 됩니다. 패키지 안에 getTossShareLink.d.ts 파일 자체는 있는데 barrel export에 연결이 안 된 것 같습니다.

임시로 intoss://<앱이름>?room=CODE 형태의 스킴 문자열을 직접 만들어서 카카오톡 전달 / 브라우저 주소창 입력 / QR 스캔 세 가지 방식으로 실기기 테스트를 해봤는데 전부 실패했습니다(카톡은 링크로 인식조차 안 하고, 주소창 입력·QR 스캔 모두 앱이 안 열림). getTossShareLink()가 실제로는 https://toss.im/… 형태의 유니버설 링크를 반환해서 그 감싸는 과정이 꼭 필요한 게 아닐까 추측하고 있습니다.

  • 웹 SDK(WebView 기반 미니앱)에서 getTossShareLink를 쓸 수 있는 다른 import 경로가 있을까요?
  • 아니면 현재는 React Native SDK(@apps-in-toss/framework) 전용이고 웹 SDK 지원은 예정인 상태인가요?
  • 웹 기반 미니앱에서 "토스 앱 안에서만 열리는 초대/공유 링크"를 만드는, 지금 당장 쓸 수 있는 공식적으로 권장되는 방법이 있다면 알려주시면 감사하겠습니다.

안녕하세요 :slight_smile:
방금 테스트해보니 getTossShareLink가 정상적으로 동작하는 것 같은데, 어떻게 테스트 해주셨을까요 ?
아래와 같이 테스트했습니다 :man_bowing:
const link = await getTossShareLink('intoss://{appName}');

안녕하세요, 답변 감사합니다!

말씀해주신 대로 다시 테스트해보니 getTossShareLink()가 정상적으로 동작하는 걸 확인했습니다. 원인을 다시 살펴보니 두 가지를 착각하고 있었던 것 같습니다.

  1. SDK export 확인이 불완전했습니다. @apps-in-toss/web-framework의 최상위 dist-web/index.d.ts만 보고 "안 걸려 있다"고 판단했는데, 실제로는 @apps-in-toss/web-bridge 내부의 index.d.ts → bridge.d.ts → getTossShareLink.d.ts 재export 체인이 정상적으로 연결되어 있었습니다. 최상위 파일 하나만 보고 성급하게 결론 낸 게 문제였습니다.
  2. intoss:// 스킴 자체가 정식(공개) 출시 심사 승인 전에는 안 열리는 제약이 있다는 걸 나중에 확인했습니다(문서 기준 — 출시 전엔 intoss-private://을 써야 한다고 되어 있더군요). 저희가 raw intoss:// 딥링크로 실기기 테스트했던 시점이 마침 출시 승인 전이라, 그래서 카톡 공유/주소창/QR 세 가지 방식 다 실패했던 게 아닐까 싶습니다. getTossShareLink() 자체 문제가 아니라 타이밍 문제였던 것 같습니다.

이후 저희 앱이 출시 심사 승인을 받은 뒤 getTossShareLink(‘intoss://<앱이름>?room=CODE’)로 다시 감싸서 실기기 테스트했더니 카톡 공유/QR/링크 복사 전부 정상적으로 토스 앱이 열리는 것까지 확인했습니다. 답변 주셔서 다시 검증할 수 있었습니다, 감사합니다!