이 글의 성격은 무엇인가요?
질문 / 문제 해결
내용을 설명해주세요
제목: 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" 등도 같이 보내고 있습니다. 토스끼리 연결이 아니라, 우리가 배포한 웹이 “이 시점에 이 동작 해달라”고 보내는 구조라고 보시면 됩니다.
도움 부탁드립니다.
