WKWebView 清理cookie的坑

自iOS 8之后,WKWebView的高性能使很多开发者逐渐从UIWebView转到WKWebView,从此开启了开发者们对WKWebView又爱又恨的历程,趟过很多坑,我这里就说下清理cookie的坑

  • 使用UIWebView时,清理cookie使用NSHTTPCookieStorage单例就行了
//清除cookie
NSHTTPCookie *cookie;  
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];  
for (cookie in [storage cookies]){  
  [storage deleteCookie:cookie];  
}
  • 到了WKWebView,因为iOS 8并没有提供管理的API,所以只能通过获取沙盒Cookies路径删除
NSString *libraryPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).firstObject;
NSString *cookiesFolderPath = [libraryPath stringByAppendingString:@"/Cookies"];
[[NSFileManager defaultManager] removeItemAtPath:cookiesFolderPath error:nil];
  • iOS 9之后,苹果提供了WKWebsiteDataStore相关API
    if (@available(iOS 9.0, *)) {
        [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:[NSSet setWithObjects:WKWebsiteDataTypeCookies, nil] modifiedSince:[NSDate distantPast] completionHandler:^{

        }];
    }
  • 但是各位老铁,如果真的用了上面的代码,会发现,清理cookie变成了概率事件,有时好用有时不好用,所以只能用另一个API
[[WKWebsiteDataStore defaultDataStore] fetchDataRecordsOfTypes:[NSSet setWithObjects:WKWebsiteDataTypeCookies, nil]
                             completionHandler:^(NSArray<WKWebsiteDataRecord *> * _Nonnull records) {
                                 [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:[NSSet setWithObjects:WKWebsiteDataTypeCookies, nil]
                                               forDataRecords:records
                                            completionHandler:^{
                                                
                                                }                                               
                                            }];
                             }];
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近在学习WKWebView中的cookie方案,本来以为只是简单的设置一下就好了,参考了很多资料,发现里面的坑越...
    angry_zxy阅读 16,878评论 11 35
  • 1、WKWebView 白屏问题WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebV...
    iosRn阅读 2,139评论 1 10
  • 转载:http://www.cnblogs.com/NSong/p/6489802.html 导语 WKWebVi...
    李小威阅读 4,913评论 8 9
  • 1、WKWebView 白屏问题WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebV...
    无名感恩阅读 2,170评论 0 3
  • UIWebView 之痛 开发App的过程中,常常会遇到在App内部加载网页,通常用UIWebView加载。而这个...
    zyl04401阅读 16,157评论 46 157