WKWebView我跨過去的坑

使用之初

在使用WKWebView之前,你一定覺得它比UIWebView更快割按,占用更少的內(nèi)存,使用更加靈活磷籍,摒棄了iOS7之后已經(jīng)迫不及待的要換上它适荣,但是在那之前還是多了解一下是否適合你的項目吧。
關于WKWebView和UIWebView的對比網(wǎng)上一大堆择示,總的來說無非都是說WKWebView的好處。不可否認的晒旅,WKWebView確實要好用栅盲,APP內(nèi)的表現(xiàn)也很好,但我還是吐吐槽吧废恋,順便記錄一下遇到的問題谈秫,如果有錯誤的認識歡迎拍磚指正,不勝感激鱼鼓。

關于緩存

眾所周知拟烫,WKWebView是沒有緩存的,所以也無從清理迄本。

因為現(xiàn)在WKWebView會忽視默認的網(wǎng)絡存儲硕淑, NSURLCache, NSHTTPCookieStorage, NSCredentialStorage。 目前是這樣的嘉赎,WKWebView有自己的進程置媳,同樣也有自己的存儲空間用來存儲cookie和cache, 其他的網(wǎng)絡類如NSURLConnection是無法訪問到的公条。 同時WKWebView發(fā)起的資源請求也是不經(jīng)過NSURLProtocol的拇囊,導致無法自定義請求。

這樣導致了在使用時遇到了H5頁面修改了靶橱,APP卻沒有更新到寥袭,想清理緩存卻無從下手,悲催的我只好在url后面加上時間戳关霸,算是解決了這個問題传黄。(如果你沒有碰到這個情況,那算我的靈異事件了队寇。尝江。)

let url = NSURL(string: "http://xxxx?timestamp=\(NSDate().timeIntervalSince1970)")!
webView.loadRequest(NSURLRequest(URL: url))

關于Cookie

在使用UIWebVIew的時候我們并不關心Cookie,因為在調(diào)用登錄接口的時候無論是AFNetworking英上,還是AlamoFire炭序,登錄成功之后都會保存在

NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies

UIWebView也從這里面取啤覆,所以調(diào)用接口之后UIWebView一路暢通,但WKWebView就不知道往哪里扔了惭聂,全無頭緒窗声。好吧,既然你不來取辜纲,那我扔給你好了笨觅。


    lazy var cookieString:String! = {
        let cookiesStorage = NSHTTPCookieStorage.sharedHTTPCookieStorage()
        var cookieStr = ""
        cookiesStorage.cookies?.forEach({ cookie in
            cookieStr += "\(cookie.name)=\(cookie.value);"
        })
        return cookieStr
    }()
    func loadUrl() {
        let url = NSURL(string: "http://bchat.ocmcom.com/HUser/user")!
        let request = NSMutableURLRequest(URL: url)
        request.addValue(cookieString, forHTTPHeaderField: "Cookie")
        webView.loadRequest(request)
    }

好了,這個Request有Cookie了耕腾,但是隨便點擊跳轉別的地方见剩,又沒了,坑爹呢這是扫俺。苍苞。。好吧狼纬,再想辦法

let userScript = WKUserScript(source: cookieJS, injectionTime: .AtDocumentStart, forMainFrameOnly: false)
webView.configuration.userContentController.addUserScript(userScript)

好了羹呵,后續(xù)也有了,又算是解決了吧疗琉。但始終有個頁面要二次進入才有冈欢,不明白。

關于彈窗

開始我想看看iOS調(diào)用JS是否成功盈简,于是寫了一個JS方法

function testAlert() {
    alert('this is alert test')
}

結果完全沒反應啊~~凑耻。原來要實現(xiàn)WKUIDelegate

optional public func webView(webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: () -> Void)

好吧,一切DIY柠贤,俗話說的好拳话,雙手健全,交什么女朋友种吸。
而且更自由弃衍,原生交互體驗更佳。我就這么說服自己了坚俗。

關于跨域

緊接著镜盯,有一個界面要跳到支付寶頁面去支付,結果怎么點怎么都沒反應啊親猖败。
你要不要這么傲嬌速缆。一定是我哪里沒設置好。
好吧恩闻,果然如此艺糜,它就藏在WKNavigationDelegate里面

// 這個方法決定導航的動作,處理鏈接能否導航。
// WebKit對跨域進行了安全檢查限制破停,不允許跨域翅楼。
// 因此我們要對不能跨域的鏈接單獨處理。
public func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void)

結尾

最終我還是換回了UIWebView真慢,倍感輕松毅臊,但是這種感覺好不爽。
WKWebView始終給我半成品的感覺黑界,各種Android那邊正常到iOS這邊怎么不行的問題管嬉,我是比較喜歡推陳出新的,但如果這種東西需要程序猿花費太多精力來處理兼容的話朗鸠,還是先不要上到項目來吧蚯撩,畢竟大家都這么忙。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末烛占,一起剝皮案震驚了整個濱河市胎挎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扰楼,老刑警劉巖呀癣,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件美浦,死亡現(xiàn)場離奇詭異弦赖,居然都是意外死亡,警方通過查閱死者的電腦和手機浦辨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門蹬竖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人流酬,你說我怎么就攤上這事币厕。” “怎么了芽腾?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵旦装,是天一觀的道長。 經(jīng)常有香客問我摊滔,道長阴绢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任艰躺,我火速辦了婚禮呻袭,結果婚禮上,老公的妹妹穿的比我還像新娘腺兴。我一直安慰自己左电,他們只是感情好,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著篓足,像睡著了一般段誊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上纷纫,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天枕扫,我揣著相機與錄音,去河邊找鬼辱魁。 笑死烟瞧,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的染簇。 我是一名探鬼主播参滴,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼锻弓!你這毒婦竟也來了砾赔?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤青灼,失蹤者是張志新(化名)和其女友劉穎暴心,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杂拨,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡专普,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了弹沽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片檀夹。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖策橘,靈堂內(nèi)的尸體忽然破棺而出炸渡,到底是詐尸還是另有隱情,我是刑警寧澤丽已,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布蚌堵,位于F島的核電站,受9級特大地震影響沛婴,放射性物質(zhì)發(fā)生泄漏吼畏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一瘸味、第九天 我趴在偏房一處隱蔽的房頂上張望宫仗。 院中可真熱鬧,春花似錦旁仿、人聲如沸藕夫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽毅贮。三九已至办悟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間滩褥,已是汗流浹背病蛉。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瑰煎,地道東北人铺然。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像酒甸,于是被迫代替她去往敵國和親魄健。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容