[WebKit] WKWebsiteDataStore : 웹 뷰 데이터 관리

Sean·2023년 5월 26일
0

WebKit

목록 보기
3/4

누군가에게 알려주기 보다는 나 스스로 정리 하며 언젠가 다시 사용할 때를 대비하는 글을 작성할것이다.

참고자료 : WKWebsiteDataStore 공식문서

시작

Document: WKWebsiteDataStore

개요

  • 웹뷰의 쿠키, 디스크, 메모리 캐시 그리고 다른 데이터 타입을 관리

버전

  • iOS 9.0+
  • macOS 10.11+

번역

Overview

WKWebsiteDataStore 오브젝트를 사용하여 웹 사이트의 데이터를 관리 할 수 있다.
해당 오브젝트를 사용하여 다음과 같은 동작을 수행한다.

  1. 웹 사이트가 사용하는 쿠키를 관리할 수 있다.
  2. 웹 사이트에서 저장하는 데이터의 타입에 대해서 알 수 있다.
  3. 웹 사이트에서 원하지 않는 데이터를 삭제 할 수 있다.

웹뷰 생성 전에 데이터 스토어 오브젝트를 만들어 WKebViewConfiguration 오브젝트의 websiteDataStore 속성에 할당한다.
default() 메서드는 웹사이트 데이터를 디크스에 저장하는 데이터 스토어를 반환한다.
프리베잇한 브라우징을 구현하기 위해 nonPersistent() 메서드를 대신 사용하여 비영구적인 데이터 스토어를 만든다.

분석

그리 엄청 많은 구성이 존재하는게 아니고 Overview의 설명에 기반을 두기에 금방 이해가 가능하다.

Topics

Data Store 오브젝트 생성

  1. default ()
    • 디스크에 저장된 곳에 접근
  2. nonPersistent()
    • 디스크가 아닌 메모리에 접근

Data Store 프로퍼티 검사

  1. isPersistent: Bool
    • 데이터를 디스크에 저장 할것인 지 결정
  1. httpCookieStore: WKHTTPCookieStore
    • 웹 사이트의 HTTP 쿠키 관리하는 오브젝트

특정한 타입의 데이터 검색

  1. func fetchDataRecords(ofTypes: Set< String >, completionHandler: ([WKWebsiteDataRecord]) -> Void)
    • data store 에 지정된 타입의 레코드를 가져온다.
  2. allWebsiteDataType() -> Set< String >
    • 사용 가능한 모든 데이터 타입의 Set 을 반환

특정한 타입의 데이터 제거

  1. func removeData(ofTypes: Set< String >, for: [WKWebsiteDataRecord], completionHandler: () -> Void)
    • 하나 이상의 데이터 레코드에서 지정된 웹 사이트의 데이터를 제거
  2. func removeData(ofTypes: Set< String >, modifiedSince: Date, completionHandler: () -> Void)
    • 지정 날짜 이후 변경된 웹 사이트 데이터 제거

사용

디스크 저장 데이터 초기화 위해 접근

WKWebsiteDataStore.default()

데이터를 가져 올때는 fetchDataRecords() 메서드 이용

WkWebsiteDataStore.default()
	.fetchDataRecords(ofTypes: WKWebsiteDataStore.allWebsiteDataTypes(), 
    				  completionHandler: { records in
	                      ...
                      })

참고자료

기타

당연 틀린 부분 지적은 감사하나 비난은 정중하게 사양하겠다.

profile
"잘 할 수 있을까?"를 고민하기보단 재밌어 보이는건 일단 하고, 잘하기 위해 그냥 계속합니다.

0개의 댓글