[SWIFT, IOS] [SWIFT] WKWebview 쿠키, 세션, 로컬스토리지 등 웹 데이터 삭제 및 값 얻어오기
[코드]
let websiteDataTypes = NSSet(array: [WKWebsiteDataTypeDiskCache, WKWebsiteDataTypeMemoryCache, WKWebsiteDataTypeCookies]) let date = NSDate(timeIntervalSince1970: 0) WKWebsiteDataStore.default().removeData(ofTypes: websiteDataTypes as! Set, modifiedSince: date as Date, completionHandler:{ }) print("delete cache data") /* 모든 열어본 페이지에 대한 데이터를 모두 삭제 WKWebsiteDataStore.default().fetchDataRecords(ofTypes: WKWebsiteDataStore.allWebsiteDataTypes(), completionHandler: { (records) -> Void in for record in records{ WKWebsiteDataStore.default().removeData(ofTypes: record.dataTypes, for: [record], completionHandler: {}) print("delete cache data") } }) */
중요한 점은 websiteDataTypes에 들어가는 array에서 WKWebsiteDataTypeXXXX로 원하는 데이터 등을 선택할 수 있다.
원하는 것만 선택할 때는 첫 번째 방법대로 하면 되고, 아예 모든 웹 데이터들을 삭제하고 싶다면 주석 부분으로 하면 된다.
[값 얻기]
현재 웹뷰 안에 있는 웹페이지에서 사용하는 쿠키의 값을 얻어오려면
WKWebsiteDataStore.default().httpCookieStore.getAllCookies({ (cookies) in for cookie in cookies{ print("WKWebsiteDataStore cookie : \(cookie.name) // \(cookie.value)") } })
비슷한 예로 HTTPCookieStorage라는 클래스를 이용하여 얻어오는 것도 있는데, 값이 제대로 리턴되지 않는다.
이유는 찾기가 어려웠고.. 일단은 삭제하던 클래스와 마찬가지로 WKWebsiteDataStore를 이용하는 것이 나을 듯 하다.
참고 : https://stackoverflow.com/questions/41765322/wkwebview-pick-cookies-from-nshttpcookiestorage
[출처] https://g-y-e-o-m.tistory.com/83
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.