WKWebViewのCookieを消す

Updated
Nov 9, 2019 7:42 AM
Created
Nov 9, 2019 7:39 AM
Tags
SwiftMemo
Keywords
Date

💡

WKWebsiteDataStore.default はWKWebViewで使用しているConfigurationによるものなので、適切なDataStoreを使う

let dataStore = WKWebsiteDataStore.default()

dataStore.fetchDataRecords(
  ofTypes: WKWebsiteDataStore.allWebsiteDataTypes(),
  completionHandler: { records in

    records.forEach { record in

      dataStore.removeData(
        ofTypes: record.dataTypes,
        for: [record],
        completionHandler: {

      })
    }

})

おまけで、FetchとRemoveは非同期なので、全部終わったことを通知として知るには`DispatchGroup`を使う。

let group = DispatchGroup()

let dataStore = WKWebsiteDataStore.default()

group.enter()
group.notify(queue: .main) {
  Log.info("Deleted Cookie on WKWebsiteDataStore")
}

dataStore.fetchDataRecords(
  ofTypes: WKWebsiteDataStore.allWebsiteDataTypes(),
  completionHandler: { records in

    records.forEach { record in

      group.enter()

      dataStore.removeData(
        ofTypes: record.dataTypes,
        for: [record],
        completionHandler: {

          group.leave()
      })
    }

    group.leave()
})