본문 바로가기

안드로이드/오류해결

안드로이드 웹뷰 쿠키 동기화 이슈

반응형

웹뷰에서 저장된 쿠키가 삭제되는 경우가 발생합니다. 이런 경우 쿠키 매니저를 사용해서 동기화 해줘야 합니다.

구글링을 했을때 CookieSyncManager와 CookieManager 두가지를 사용한 예제들이 많은데 CookieSyncManager는 api21 부터 deprecated 됐기 때문에 CookieManager를 사용하셔야 하고 자세한 내용은 제 포스팅을 참고해주세요.

 

[안드로이드/Android] 쿠키매니저 다루기

이번 포스팅의 주제는 쿠키매니저 입니다. 쿠키란? 웹 사이트에 방문한 사용자의 디바이스에 저장해 놓은 작은 데이터 파일입니다. 주로 사용자가 사이트를 재방문 했을때 편리함을 제공하기

superwony.tistory.com

 

| 쿠키 보존

쿠키 저장 시점을 알수 없는 앱에 입장으로써 웹뷰 페이지 로드가 끝나는 시점이나, 엑티비티에 생명주기에 동기화를 해줘야 합니다. 

            override fun onPageFinished(view: WebView?, url: String?) {
                super.onPageFinished(view, url)
                CookieManager.getInstance().flush()
            }

 WebViewClient  onPageFinished는 웹뷰 로딩이 끝났을때 호출됩니다. 하지만 페이지 로드가 끝나고 뜬 팝업에 '하루동안 보지 않기' 기능이 있을 경우, 하루동안 보지 않기를 클릭하고 팝업을 종료한 뒤 앱을 종료할 경우 팝업이 지속적으로 나타납니다. ( 쿠키 손실 현상 ) 

위와 같은 경우를 대비해 엑티비티 onDestory에 'CookieManager.getInstance().flush()' 코드를 추가 하면 됩니다.

 

| 구형 기기 대응

일부 구형기기 ( ex 갤럭시 노트5 )의 경우 홈버튼을 눌러 메인으로 이동해, 앱을 종료할 경우 onDestory가 호출되지 않는 현상이 있습니다. 그래서 onPause에도 동기화 코드를 추가해 앱이 백그라운드로 이동할때도 동기화 되도록 수정해 이슈가 재발하지 않는걸 확인 했습니다.

 

위 대응으로 전반적인 동기화 이슈는 잡을 수 있습니다. 기타 다른 이슈가 발생하거나 궁금한 사항이 있으면 댓글로 남겨주세요 ! 

반응형