카카오네비 앱이 설치되지 않은 안드로이드 기기에서
웹뷰 기반의 타 서비스에서 카카오네비 앱 호출 시 구글 Play Store로 리다이렉션되는 과정에서 발생하는 문제입니다.
해당 현상을 재현해보면 아래의 이미지와 같습니다.
아무래도 Google PlayStore로 Redirect 시 URL의 형식 문제인것 같은데요.
404 오류가 발생하는 URL은 다음과 같습니다.
- 디코딩 전 URL
- 디코딩 된 URL
http://market.android.com/details?id=package=com.locnall.KimGiSa;S.browser_fallback_url=https://kakaonavi.kakao.com/launch/index.do?appkey=44732c3ca5b90a4f1f49c6b38df023d1&apiver=1.0&extras={“KA”:“sdk/1.43.0 os/javascript sdk_type/javascript lang/ko-KR device/Linux_aarch64 origin/https%3A%2F%2Fkorean.visitkorea.or.kr”}¶m={“destination”:{“name”:“장충동 족발 골목”,“x”:127.0057825956,“y”:37.5604832175},“option”:{“coord_type”:“wgs84”,“vehicle_type”:1,“rpoption”:100,“route_info”:false}}
우선 해당 서비스에서 활용한 Kakao SDK는 2.0.1 버전이며 import 코드는 다음과 같습니다.
<script src="https://t1.kakaocdn.net/kakao_js_sdk/2.0.1/kakao.min.js" integrity="sha384-eKjgHJ9+vwU/FCSUG3nV1RKFolUXLsc6nLQ2R1tD0t4YFPCvRmkcF8saIfOZNWf/" crossorigin="anonymous"></script>
해당 버전 SDK의 minify 버전이 아닌 원본 버전의 코드를 살펴본 결과
원본 버전 URL : https://t1.kakaocdn.net/kakao_js_sdk/2.0.1/kakao.js
코드라인 5500~5600 부근에 callWeb2app()
메소드에서 androidIntent
변수에 해당하는 URL 값에 문제가 있는게 아닌가하여 임의로 코드를 수정하여 임시 방편으로 처리했습니다.
- 기존 코드
function callWeb2app(naviScheme, fallbackUrl) {
var androidIntent = ["intent:".concat(naviScheme, "#Intent"), 'com.locnall.KimGiSa', "S.browser_fallback_url=".concat(encodeURIComponent(fallbackUrl)), 'end;'].join('&');
...
}
- 변경 후 코드
function callWeb2app(naviScheme, fallbackUrl) {
var androidIntent = ["intent:".concat(naviScheme, "#Intent"), 'com.locnall.KimGiSa&S.browser_fallback_url='.concat(encodeURIComponent(fallbackUrl)), 'end;'].join (';');
...
}
해당 문제가 발생하는 현상 본 내용 참고하시어 조치하는데 도움이 되시길 바라며,
혹시나 저희 서비스 혹은 소수 일부의 서비스에 한해 발생하는 문제라면 추가 가이드 주시면 좋을것 같습니다.