介紹
最近新?lián)Q了一份工作,公司的項目全是用幾個基礎(chǔ)框架去嵌套UIWebview,來實現(xiàn)不同客戶的需求。由于客戶抱怨UIWebvie加載速度太慢,容易Crash等問題,決定將UIWebview替換成WKWebView。那么問題就來了,因為WKWebView的cookie注入的時機有很大問題,我在網(wǎng)上查閱了很多資料最終解決了這個問題。(特別是登錄和登出的時候狀態(tài)都有問題)。
1.保持cookie同步
因為WKWebview deCookie 是與系統(tǒng)分開的,如果使用兩個以上 webview 同時訪問服務(wù)器,這兩個 webview 之間的存儲是毫無關(guān)系的.最關(guān)鍵的是,保存登錄狀態(tài)的 sessionid 也不一樣,也就是說,在一個 webview 頁面里登錄之后,另一個 webview 依舊是未登錄的狀態(tài)。這就需要兩個webview公用一個WKProcesspool。需要同步的webview都要設(shè)置WKProcessPool,我是寫了一個基類,其他WKWebview頁面都繼承它。(單例的代碼我就不貼出來了)

2.在第一次加載的時候注入cookie
我在接受幾個項目的時候發(fā)現(xiàn)WKWebview在第一次加載請求的時候是不注入cookie的,第二次加載的時候發(fā)現(xiàn)cookie已經(jīng)注入了。這個時候我們就需要在第一次加載的時候注入cookie。

而且你需要在WKNavigationDelegate的代理方法去對cookie做一個存儲

3.在登出操作的時候清除cookie
我在做登出操作的時候,發(fā)現(xiàn)如果不對cookie做出清除,他會從NSHTTPCookieStorage取出上一次存儲的cookie來做請求。導(dǎo)致WKWebview頁面還是登陸的狀態(tài),這個時候就需要及時的去清理cookie。


以上這些操作昨晚以后我自測就沒什么問題了,寫的很差,但希望能幫助到你們一點點就好。這篇博文寫的很好,其中獲益良多,分享給大家。http://www.cnblogs.com/NSong/p/6489802.html