當前位置:編程學習大全網 - 源碼下載 - WKWebView的網絡攔截問題

WKWebView的網絡攔截問題

利用NSURLProtocol攔截WKWebView的請求

我們知道 ,ios 8.0以後,apple給出了壹個WKWebView來替換 UIWebView,前者比後者在加載速度方面優化了很多,但是也有不少坑點,比如在攔截wkwebView的請求上,apple始終沒有給出明確的API供開發者使用,正常情況下,我們自定義壹個NSURLProtocol類,然後在AppDelegate裏面register壹波,就可以攔截到app內部所有的網絡請求,但是妳會發現,wkwebView並不吃這壹套,what the fuck!,這壹點在網上有人說wkwebView的請求是在單獨的進程裏面,為了性能方面的考慮,所以不走NSURLProtocol,但是通過打斷點會發現,它會走壹下 + (BOOL)canInitWithRequest:(NSURLRequest *)request ,然而這就尷尬了,為啥他會走壹下,然後就壹直不走了呢?於是我開始去研究了壹波技術討論,請教了壹些大牛,找到了解決方案:寫壹個單獨的NSURLProtocol類的分類方法,這裏要提醒壹下:由於這是私有方法,可能導致上線被拒!!!

.h文件:

.m文件:

然後在AppDelegate裏面去註冊壹波scheme,壹般是註冊http和https,然後打壹波斷點妳就會發現,可以攔截了,可以為所欲為了,壹般對wkwebView的攔截的原因壹般是要加壹些特定的請求頭或者攔截廣告(接觸的項目裏面是這樣幹的)

+ (BOOL)canInitWithRequest:(NSURLRequest *)request 在這裏進行過濾判斷,

+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request 這裏面可以拿到被攔截的請求,可以在這裏面對這個request進行二次處理,然後在startLoading方法裏面自己進行自定義的處理!

  • 上一篇:求各種小說、 最好是古代或者言情的 越快越好
  • 下一篇:★★說實話,我不知道什麽叫"博客",能詳細介紹壹下嗎?
  • copyright 2024編程學習大全網