반응형
하이브리드 앱을 제작하다 보면 웹페이지에서 저장한 데이터(쿠키, 캐시)를
삭제해야 하는 경우가 생긴다.
하지만 모든 저장 데이터를 삭제하다 보면 다른 웹 페이지에 저장된 데이터까지
모두 삭제되어 예외사항이 발생할 수 있다.
특정 페이지에서 저장된 데이터만 삭제하는 코드를 알아보자.
// 다음과 같이 displayName을 이용하여 특정 데이터만 삭제.
WKWebsiteDataStore.default().fetchDataRecords(ofTypes: WKWebsiteDataStore.allWebsiteDataTypes()) { records in
WKWebsiteDataStore.default().removeData(ofTypes: WKWebsiteDataStore.allWebsiteDataTypes(),
for: records.filter { $0.displayName.contains("mytest.com") },
completionHandler: {
print("\("delete website data")")
})
}
다음은 모든 캐시데이터 및 특정 도메인 쿠키 삭제
// 모든 캐시데이터 삭제
let cacheDataTypes : Set<String> = [WKWebsiteDataTypeDiskCache, WKWebsiteDataTypeMemoryCache]
let date = Date(timeIntervalSince1970: 0)
WKWebsiteDataStore.default().removeData(ofTypes: cacheDataTypes,
modifiedSince: date ,
completionHandler: {
print("delete cache data")
})
// 특정 도메인 쿠키만 삭제
let cookieDataType : Set<String> = [WKWebsiteDataTypeCookies]
WKWebsiteDataStore.default().fetchDataRecords(ofTypes: cookieDataType) { records in
WKWebsiteDataStore.default().removeData(ofTypes: cookieDataType,
for: records.filter { $0.displayName.contains("mytest.com") },
completionHandler: {
print("delete cookie data")
})
}
웹 저장 데이터 로그 출력
// 쿠키 정보 보기
WKWebsiteDataStore.default().httpCookieStore.getAllCookies { cookies in
for cookie in cookies {
print("cookie : \(cookie)")
}
}
/*
출력 로그 :
cookie : <NSHTTPCookie
version:1
name:JSESSIONID
value:43C2101193D26FDE7F2DB61D86E15B0E
expiresDate:'(null)'
created:'2021-09-17 00:06:31 +0000'
sessionOnly:TRUE
domain:www.mytest.com
partition:none
sameSite:none
path:/
isSecure:FALSE
isHTTPOnly: YES
path:"/" isSecure:FALSE isHTTPOnly: YES>
*/
반응형
'개발 > iOS' 카테고리의 다른 글
문자열 숫자에 콤마 넣기 (0) | 2022.10.14 |
---|---|
유니버셜 링크(Universal Links) 문제점 해결 (0) | 2022.07.21 |
버전분기 샘플 (0) | 2021.08.02 |
시뮬레이터 분기 (0) | 2021.08.02 |
Foreground 이벤트 받기 (0) | 2021.08.02 |