Android WebView 커스텀 스킴 파라미터 검증 및 라우팅 구현 방법
이래저래 하이브리드 앱을 개발하고 운영하다 보면, 웹 화면에서 안드로이드 네이티브 기능을 꼭 호출해야 하는 상황이 생깁니다. 공유하기를 띄우거나, 외부 브라우저를 열거나, 기기 지도를 호출하는 기능들이 대표적이죠. 저의 경우 결과값을 웹으로 다시 리턴해 줄 필요가 없는 단순 단방향 호출에는 커스텀 스킴( myapp://action?key=value )을 자주 사용합니다. 구조가 단순해서 웹 쪽에서 호출하기 편하거든요. 하지만 이게 웹 개발자랑 앱 개발자 사이에 규칙을 제대로 안 잡아두면 나중에 코드가 지저분해지고 보안 구멍이 생기기 딱 좋습니다. 웹에서 주는 값을 검증 없이 그대로 Intent에 쑤셔 넣었다가 앱이 픽 터지거나 민감한 정보가 노출되는 경우가 많기 때문입니다. 실무에서 안전하게 쓸 수 있는 라우팅 구조와 파라미터 검증 코드를 정리해 둡니다. 1. 연동 방식 선택 기준 (내가 커스텀 스킴을 쓰는 이유) 웹과 앱을 연결하는 방법은 몇 가지가 있지만, 각자 장단점이 명확합니다. 상황에 맞게 골라 써야 나중에 고생을 안 합니다. 방식 설명 장점 주의할 점 / 추천 상황 커스텀 스킴 특정 URL 형식을 앱이 가로채서 분기 구조가 단순함 결과 리턴이 필요 없는 단순 단방향 호출 JavaScript Interface JS에서 Android 메서드를 직접 호출 양방향 연동 가능 노출 메서드가 많아지면 보안 검토 필수 postMessage 메시지 기반으로 웹/앱 통신 구조화하기 좋음 OS 버전별 동작 확인 필요 서버 API 웹/앱이 서버를 통해 상태를 공유 결합도가 낮음 실시간 네이티브 제어에는 부적합 저의 경우, "공유창 열기", "외부 브라우저 토스"처럼 호출만 하고 끝나는 기능에는 무조건 커스텀 스킴으로 구조를 단순하게 가져갑니다. 2. 핵심 구현 코드 (Java) 자꾸 까먹어서 나중에 바로 복사해 쓰려고 남겨두는 베이스 코드입니다. 실무 프로젝트에 적용할 때는 서비스 규칙에 맞게 스킴명( myapp )이나 호스트( na...