IT 상식

Android 모바일 브라우저에서 intent 호출시 발생하는 문제

mt프로젝트 2016. 9. 16. 13:04
안드로이드의 브라우저들은 모두 모바일 크롬 브라우저를 기반으로 만들어진다. 따라서 크롬브라우저에서 특정 패치가 이루어지면 늦든 빠르든 다른 브라우저들에도 영향을 주게된다.

과거 크롬 브라우저 37 버전 가량에서 다양한 수정사항이 반영되었는데, 그중 한가지가 모바일 크롬 브라우저에서의 intent 주소 호출에 관한 것이었다.
 개발을 하다보면 어떤 웹페이지에 접속할 때 특정 앱 혹은 마켓으로 연결하는 기능을 구현하고 싶을때가 있다. 이럴때 사용하는것이 intent주소 (혹은 커스텀스킴)인데 이것들을 onload를 사용해서 호출 할 때 문제가 된다.
 기존에는 특정 페이지를 onload 이벤트(혹은 fake클릭 등)로 intent주소/커스텀스킴을 호출하도록 구현하면, 사용자가 해당 페이지에 접근 했을때 설치된 특정 앱을 호출하였다. 하지만 위의 패치를 한 뒤에는 동일한 페이지 호출 시 intent 에러페이지가 나오거나 history.back ()이 되고 앱 호출이 정상적으로 되지 않는다.
 이는 크롬 개발자 그룹에서 토의를 통해 그렇게 결정된 것으로서 사용자가 스팸문자 등을 통해 낚시url을 클릭해서 악성 App을 설치하거나 실행하는 경우를 예방하기 위함이다. 그렇다고 intent 연결기능 자체를 막을수는 없으니, onload 이벤트를 사용하지 않고 버튼클릭을 통해 유저의 액션이 있다면 정상적으로 동작하게 된다. 프로그램에 의한 어뷰징이 아니라 유저의 정상적인 행동이라고 판단하는 것이다.
 따라서 해당 기능을 onload와 같은 방법을 통해 구현하려고 애쓰는 분들께서는 빨리 포기하고 상급자를 설득하여 버튼을 달아주는 방향으로 가는것이 옳을 것이다.