介绍
最近新换了一份工作,公司的项目全是用几个基础框架去嵌套UIWebview,来实现不同客户的需求。由于客户抱怨UIWebvie加载速度太慢,容易Crash等问题,决定将UIWebview替换成WKWebView。那么问题就来了,因为WKWebView的cookie注入的时机有很大问题,我在网上查阅了很多资料最终解决了这个问题。(特别是登录和登出的时候状态都有问题)。
1.保持cookie同步
因为WKWebview deCookie 是与系统分开的,如果使用两个以上 webview 同时访问服务器,这两个 webview 之间的存储是毫无关系的.最关键的是,保存登录状态的 sessionid 也不一样,也就是说,在一个 webview 页面里登录之后,另一个 webview 依旧是未登录的状态。这就需要两个webview公用一个WKProcesspool。需要同步的webview都要设置WKProcessPool,我是写了一个基类,其他WKWebview页面都继承它。(单例的代码我就不贴出来了)
2.在第一次加载的时候注入cookie
我在接受几个项目的时候发现WKWebview在第一次加载请求的时候是不注入cookie的,第二次加载的时候发现cookie已经注入了。这个时候我们就需要在第一次加载的时候注入cookie。
而且你需要在WKNavigationDelegate的代理方法去对cookie做一个存储
3.在登出操作的时候清除cookie
我在做登出操作的时候,发现如果不对cookie做出清除,他会从NSHTTPCookieStorage取出上一次存储的cookie来做请求。导致WKWebview页面还是登陆的状态,这个时候就需要及时的去清理cookie。
以上这些操作昨晚以后我自测就没什么问题了,写的很差,但希望能帮助到你们一点点就好。这篇博文写的很好,其中获益良多,分享给大家。http://www.cnblogs.com/NSong/p/6489802.html