2015년 9월 16일 수요일

window.localStorage, Android webview localStorage 사용 설정

Webview 사용 중 HTML5 local storage 사용을 위해 찾아 봄

Web Storage로 local storage, session storage를 지원하고 있고
사용자 브라우저상에서 간단히 key/value쌍으로 저장할 수 있어 간편함.

표준 : http://www.w3.org/TR/webstorage/
MDN : https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API


localStorage와 sessionStorage의 차이점은
sessionStorage는 브라우저가 열려서 닫히기 전까지 유지된다는 점이고
localStorage는 삭제 시점이 없어 거의 영구적(local에서 삭제 되기 전까지)으로 유지된다는 점이다.

Window.sessionStorage
: https://developer.mozilla.org/ko/docs/Web/API/Window/sessionStorage


Window.localStorage
: https://developer.mozilla.org/ko/docs/Web/API/Window/localStorage
HTML5 Local Storage API 설정, 기본적으로 false로 되어 있음.
=> webview.getSettings().setDomStorageEnabled(true);

database storage API 사용 설정, 페이지 로드 전에 되어야 함.
=> settings.setDatabaseEnabled(true);

Application Cache API사용 설정, database path도 함께 설정 필요
=> settings.setAppCachePath(dir.getPath());
=> settings.setAppCacheEnabled(true);


롤리팝 부터는 WebView가 Platform 차원에서 관리 되던데
관련하여 API 사용이 변경되는 게 없는지 궁금함.
특히나 application cache 설정이 좀 바뀌지 않을까 생각되는데
자세한 내용은 못 찾겠음.


그래서 일단은 아래와 같이 사용..

WebSettings settings = webview.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);
settings.setDatabaseEnabled(true);

File dir = getCacheDir();
if (!dir.exists()) {
    dir.mkdirs();
}
settings.setAppCachePath(dir.getPath());
settings.setAppCacheEnabled(true);


그 외 setAppCacheMaxSize() 호출 하던데,
API level 18에서 deprecated 되어 굳이 필요 없을 듯.

댓글 없음:

댓글 쓰기