Waylog Blog

웹뷰(WebView) 기반 하이브리드 앱 개발 팁: 브릿지(Bridge) 설계

Mobile

네이티브 앱 안에 브라우저 창(WebView)을 띄워서 웹 페이지를 보여주는 방식입니다. 앱 업데이트 없이 웹만 배포하면 되니 유지 보수가 꿀입니다. 하지만 웹에서는 카메라나 진동 같은 하드웨어를 직접 제어할 수 없죠. 그래서 JavaScript Bridge가 필요합니다.

1. 통신 원리

  • Web -> Native: window.ReactNativeWebView.postMessage(JSON.stringify({ type: 'OPEN_CAMERA' })) 웹이 정해진 규격으로 메시지를 쏘면, 앱(iOS/Android)이 이걸 가로채서 카메라를 켭니다.
  • Native -> Web: 앱이 웹뷰의 evaluateJavaScript() 함수를 실행해서 웹 쪽의 JS 함수를 호출하거나 이벤트를 트리거합니다.

2. 개발 팁

  • 버전 관리: 앱은 1.0 버전인데 웹은 2.0 기능을 쓰려고 하면 브릿지가 없어서 에러가 납니다. 앱 버전을 체크해서 분기 처리를 하거나, 하위 호환성을(Feature Detection) 고려해야 합니다.
  • 로딩 속도: 웹뷰가 뜨는 딜레이를 줄이기 위해 스켈레톤 UI를 네이티브 단에서 먼저 보여주거나, 웹 리소스(CSS, JS)를 앱에 미리 내장(Pre-bundling) 하기도 합니다.
  • 사용자 경험: 웹의 클릭 반응 속도(Tap highlight)나 스크롤 바운스 등을 네이티브처럼 보이게 CSS로 튜닝해야 이질감이 없습니다.

토스나 배달의민족 같은 슈퍼앱들도 많은 부분을 웹뷰로 하이브리드 하게 운영합니다.