내가 만든 모바일 웹에서 웹뷰로 띄우는 페이지에서 외부 사이트로 가는 링크를 누르면 가능한 경우는 두 가지다
- 웹뷰에서 해당 링크가 뜬다
- 외부 브라우저에서 해당 링크가 뜬다
1 같은 경우에는 내가 관리하고 있는 도메인에서 window.location만 가는 거나 다름 없기 때문에 계속 유저를 트래킹할 수 있다는 장점이 있다. 또 로그인 되어 있는 상태라면 로그인 상태를 유지할 수 있다
2 같은 경우는 외부 링크가 광고 링크라면 광고주에게 더 이득이다. 광고주의 사이트에서 유저를 트래킹 및 관리할 수 있기 때문이다
대부분 웹에서 외부 링크를 누르면 1과 같은 형태로 뜬다. 외부로 보내기 위해서는
browser://start?url=encodeURIComponent(url)&webViewClose=true'의 형태로 써야 한다.
만약 외부 브라우저로 보내면서도 내 모바일 웹에서 유저를 트래킹하고 싶으면(ex.조회수) 외부 브라우저로 보내기 전에 내 모바일 웹의 브라우저를 조회한 뒤에 외부 브라우저로 redirect를 하도록 한다.
이때 이미 내부 라우터가 아니라 외부 browser://로 시작하는 url을 사용하기 때문에 브라우저에 있는 세션 등을 이용해 사용자 인증을 할 수가 없다. (즉, 로그인이 되어 있었어도 외부 브라우저를 통해 유저가 있던 페이지를 조회하는 것이므로 로그인 상태를 알 수 없다)
그러므로 params로 암호화된 사용자 정보를 토큰으로 넘겨주면 그걸로 확인을 한 뒤에 하고 싶은 것들을 할 수 있다.
ex. browser://start?url=encodeURIComponent(내 도메인/redirect하고 싶은 라우터?parmas로 보낼 키=값&토큰=암호화된 사용자 정보)&webViewClose=true
결과는 이런 형태가 된다.