Mobile Web BrowSer

 파편화

개요

  • Mobile Web Browser에서 Kakaotalk 아이콘 터치 시, 
    Kakaotalk을 실행하는 기능에 대한 구현
  • iOS, Android에서 실행하는 방법에 미묘한 차이가 
    있어서 생기는 문제 공유

App 호출 방법

  1. kakaolink://sendurl?파라메터 형식으로
    location.href를 변경
  2. APP이 설치되어있다면, 해당 요청에 의해서
    화면 전환이 일어남
  3. setTimeout으로 특정 시간 내에 화면 전환이
    일어나지 않은 경우, 미설치로 간주

문제점

  • safari인 경우 url이 올바르지 않으면 alert을 띄우며
    이동을 하지 않지만, safari가 아닌 경우는 404 not found
    출력
  • 위의 문제를 해결하기 위해 android에서는 iframe 삽입을
    이용
  • iframe이기 때문에, 보안이슈가 발생함.
    특정 brower에서는 iframe을 삽입하여
    화면전환 시도 시 brower 차원에서 차단
  • android chrome brower에서 해당 현상 확인

해결방법

  • android에서는 kakaolink://가 아니라
    intent: 로 호출 시 APP 호출 가능함
  • android chrome에서 정상작동 확인

그러나...

  • intent로 호출되는 경우 APP이 설치되어 있지
    않으면 강제로 마켓으로 이동함
  • as-is 요구사항은 APP이 설치되어 있지 않다면
    마켓으로 이동하는 게 아니라 미설치 알림을
    나타내는 것
  • 해당 기능 chrome에서는 구현 불가

설상가상으로..

  • android 특정 버전(jelly bean)부터는 내장 브라우저가
    chrome(이전 버전은 webkit + v8 구현체)
  • 같은 android기기여도 내장 browser가 다르게 되버리는 
    문제 발생
  • safari(iOS)에서는 APP이 설치되어 있지 않은 경우,
    "올바르지 않은 url입니다" 라는 alert이 자동으로 뜨는데
    이 부분도 제어 불가
  • 현재 m.gsshop.com에서는 위의 문제들을 해결하지 않아서
    chrome brower or jelly bean 이후 버전의 내장 browser로는
    kakaotalk app 실행이 안 되는 문제 있음

결론

  • 현재 iOS와 Android만 해도 이정도의 문제가 있는데,
    추후 Taizen, Window Mobile, Firefox OS 등을
    지원해야 한다면.......