외부 api 미니앱 웹뷰 통신 방법

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

질문 / 문제 해결

내용을 설명해주세요

제목: WebView에 띄운 우리 웹에서 네이티브로 신호 보내서 토스트 띄우는 방법이 있을까요?

안녕하세요. 앱인토스 WebView로 미니앱 개발 중인데, 궁금한 게 있어서 문의드립니다.

우리 구조는 이렇게 되어 있어요. 미니앱 실행하면 사용자 키 확인한 다음, 배포해 둔 게임 URL로 WebView를 리다이렉트합니다. 그래서 WebView 안에 보이는 건 우리가 배포한 React 게임이에요.

그 게임 쪽에서는 로그인(유저 조회) API 호출하고, 결과 받는 그 시점에 “지금 토스트 띄워줘”라고 네이티브한테 보내는 식으로 되어 있어요. API 서버가 토스트를 보내는 게 아니라, 웹이 “지금 이 시점에 토스트 띄워달라”고 요청하는 구조입니다.

Flutter 앱에서는 InAppWebView addJavaScriptHandler로 웹의 callHandler("showToast", message) 호출을 받아서 네이티브 토스트 띄우고, gameOver나 playAd 같은 것도 같은 방식으로 웹이 시점 정해서 호출하면 Flutter가 받아서 처리하고 있어요.

앱인토스 쪽에서도 똑같이 하고 싶은데, 배포 웹에서 window.TossWebView.postMessage(JSON.stringify({ type: "showToast", message: "..." })) 이렇게 호출하도록 이미 넣어뒀거든요. 그런데 이 postMessage를 앱인토스(토스) 쪽에서 받아서 토스트 띄우거나 로그인/광고 처리하는 방법을 가이드에서 못 찾겠어요. 웹에서 네이티브로, 혹은 웹에서 미니앱으로 메시지 받는 방법이 있는지 궁금합니다.

질문은 세 가지예요.

1) WebView에 로드된 우리 웹에서 TossWebView.postMessage(...) 로 보낸 메시지를 앱인토스 쪽에서 수신할 수 있는 공식 방법이 있나요? (예: JavaScript 인터페이스, 이벤트 리스너, 네이티브 연동 API 등)

2) Flutter의 addJavaScriptHandler + callHandler처럼 “웹이 특정 시점에 호출하면 네이티브/미니앱이 받아서 토스트나 다이얼로그, 광고 실행” 하는 흐름을 앱인토스 WebView 미니앱에서 만들려면 어떤 가이드를 보면 될까요?

3) postMessage가 안 되거나 다른 방식을 써야 한다면, 웹에서 “지금 토스트 띄워줘”, “게임 오버 처리해줘” 같은 시점 신호를 네이티브로 보내는 권장 방법이 있으면 알려주실 수 있을까요?

웹에서 보내는 형태는 window.TossWebView.postMessage(JSON.stringify({ type: "showToast", message: "텍스트" })) 이렇게 하고, type으로 "gameOver", "playAd", "itemRewardAd" 등도 같이 보내고 있습니다. 토스끼리 연결이 아니라, 우리가 배포한 웹이 “이 시점에 이 동작 해달라”고 보내는 구조라고 보시면 됩니다.

도움 부탁드립니다.

이미지 첨부

안녕하세요 :slight_smile:
해당 구조는 현재 정책상 허용되지 않고 있습니다.

미니앱의 경우 외부에 호스팅된 소스코드를 불러오게 되면, 해당 코드가 별도의 검수 없이 그대로 배포될 수 있는 구조가 됩니다. 이는 보안 및 검수 정책상 관리가 어렵기 때문에 사용이 불가한 점 양해 부탁드립니다.

번거로우시겠지만, 모든 서비스 로직 및 리소스는 검수 가능한 범위 내에서 제공해 주시길 부탁드립니다.
추가로 필요한 사항이 있으시면 말씀해 주세요. 감사합니다.