🍎 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("모든 쿠키 삭제 완료!")
    }
}

 

저장된 모든 쿠키 데이터를 일괄 삭제

반응형