How to delete WKWebview cookies

后端 未结 13 1536
北荒
北荒 2020-11-27 04:18

For now I am doing like this

    NSHTTPCookie *cookie;
    NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    for (cookie in [         


        
13条回答
  •  误落风尘
    2020-11-27 04:55

    Supports iOS 11.0 and above

    Following solution worked well for me:

    Step 1. Remove Cookie from HTTPCookieStorage

    Step 2. Fetch data records from WKWebsiteDataStore and delete them.

    Step 3. Create a new WKProcessPool

    Create a WKWebView Extension:

    extension WKWebView {
    
        func cleanAllCookies() {
            HTTPCookieStorage.shared.removeCookies(since: Date.distantPast)
            print("All cookies deleted")
    
            WKWebsiteDataStore.default().fetchDataRecords(ofTypes: WKWebsiteDataStore.allWebsiteDataTypes()) { records in
                records.forEach { record in
                    WKWebsiteDataStore.default().removeData(ofTypes: record.dataTypes, for: [record], completionHandler: {})
                    print("Cookie ::: \(record) deleted")
                }
            }
        }
    
        func refreshCookies() {
            self.configuration.processPool = WKProcessPool()
        }
    }
    

    Usage:

    override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(true)
            webView.cleanAllCookies()
            webView.refreshCookies()
        }
    

提交回复
热议问题