🍎 iOS/Swift
WKWebsiteDataStore
JerryiOS
2025. 2. 20. 16:45
WKWebsiteDataStore
Webkit 프레임워크에서 제공하는 웹 사이트 데이터 저장소
쿠키, 캐시, 로컬 저장소 등의 데이터를 관리하는 객체
WKWebView와 함께 동작하면서 웹사이트 데이터를 저장하거나 삭제하는 데 사용
WKWebsiteDataStore 주요 기능
httpCookieStore: 웹사이트의 쿠키를 가져오거나 추가/삭제
default(): 기본 데이터 저장소 (일반적인 웹 브라우징)
nonPersistent(): 비 휘발성 데이터 저장소 (세션이 끝나면 데이터가 삭제)
fetchDataRecords(offTypes:): 특정 유형의 데이터를 가져옴
removeData(ofTypes:for:): 특정 유형의 데이터를 삭제
쿠키 가져오기 (httpCookieStore.getAllCookies)
WKWebsiteDataStore.default().httpCookieStore.getAllCookies { cookies in
for cookie in cookies {
print("쿠키 이름: \(cookie.name), 값: \(cookie.value)")
}
}
getAllCookies()를 호출하면 저장된 모든 쿠키를 가져와서 출력
쿠키 추가 (httpCookieStore.setCookie)
let cookie = HTTPCookie(properties: [
.domain: "example.com",
.path: "/",
.name: "user_token",
.value: "123456",
.secure: "TRUE",
.expires: NSDate(timeIntervalSinceNow: 3600) // 1시간 후 만료
])!
WKWebsiteDataStore.default().httpCookieStore.setCookie(cookie)
특정 도메인(example.com)에 user_token 쿠키 추가
1시간(3600초) 후 만료
특정 쿠키 삭제 (httpCookieStore.delete)
func deleteCookie(_ name: String) {
WKWebsiteDataStore.default().httpCookieStore.getAllCookies { cookies in
for cookie in cookies {
if cookie.name == name {
WKWebsiteDataStore.default().httpCookieStore.delete(cookie)
}
}
}
}
getAllCookies()로 쿠키를 가져와서 특정 이름과 일치하면 삭제
모든 쿠키 삭제 (removeData)
WKWebsiteDataStore.default().fetchDataRecords(ofTypes: [WKWebsiteDataTypeCookies]) { records in
WKWebsiteDataStore.default().removeData(ofTypes: [WKWebsiteDataTypeCookies], for: records) {
print("모든 쿠키 삭제 완료!")
}
}
저장된 모든 쿠키 데이터를 일괄 삭제
반응형