精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

iOS UIWebView URL攔截

移動開發 iOS
譯者在做app開發時,因為頁面的javascript文件比較大導致加載速度很慢,所以想把javascript文件打包在app里,當UIWebView需要加載該腳本時就從app本地讀取,但UIWebView并不支持加載本地資源。

譯者在做app開發時,因為頁面的javascript文件比較大導致加載速度很慢,所以想把javascript文件打包在app里,當UIWebView需要加載該腳本時就從app本地讀取,但UIWebView并不支持加載本地資源。***從下文中找到了解決方法,***次翻譯,難免有誤,大家多多指教。

iCab Mobile(一款iOS平臺的網頁瀏覽器)要實現一個攔截管理器來過濾頁面上的廣告及其他東西。它有一個簡單的基于URL過濾規則的列表(通常由用戶維護),當頁面包含的資源(圖片、js以及css等),文件的URL存在于規則列表中時,資源就不會被加載。

但看一下UIWebView類的API,會發現我們沒有辦法知道UIWebView正在加載什么資源,更糟的是,當你希望過濾掉某些資源文件的時候,沒有方法可以強制UIWebView不去加載這些文件,

攔截器看起來貌似沒有可能實現。

當然還是有解決方案的,否則這篇文件就沒什么卵用。

正如上面所說,實現攔截器不能靠UIWebView,因為UIWebView沒有提供任何有用的API。

對UIWebView的所有請求,要找到一個能中斷所有HTTP 請求的切入點,我們需要先了解一下Cocoa的URL Loading System,因為UIWebView是使用URL Loading System從web端取數據的。我們需要的切入點NSURLCache類就是URL Loading System的一部分。雖然目前iOS系統不會在磁盤上緩存任何數據(后面的iOS系統版本或許會有不同),因此在UIWebView開始加載前,NSURLCache管理的緩存數據通常為空,但UIWebView仍然會檢測所請求資源文件是否存在于緩存。所以我們需要做的只是繼承NSURLCache并重載其方法:
 

  1. - (NSCachedURLResponse*)cachedResponseForRequest:(NSURLRequest*)request 

UIWebView請求所有資源時都會調用這個方法。因為我們只需要在這個方法里判斷請求的URL是否是我們想攔截的。如果是則創建一個沒有內容的假response,否則只需調用super方法即可。

如下是實現細節:

1.繼承NSURLCache:

FilteredWebCache.h:

  1. @interface FilteredWebCache : NSURLCache 
  2. @end 

子類的主要代碼

FilteredWebCache.m:

  1. #import "FilteredWebCache.h" 
  2. #import "FilterManager.h" 
  3. @implementation FilteredWebCache 
  4. - (NSCachedURLResponse*)cachedResponseForRequest:(NSURLRequest*)request 
  5. NSURL *url = [request URL]; 
  6. BOOL blockURL = [[FilterMgr sharedFilterMgr] shouldBlockURL:url]; 
  7. if (blockURL) { 
  8. NSURLResponse *response = 
  9. [[NSURLResponse alloc] initWithURL:url 
  10. MIMEType:@"text/plain" 
  11. expectedContentLength:1 
  12. textEncodingName:nil]; 
  13. NSCachedURLResponse *cachedResponse = 
  14. [[NSCachedURLResponse alloc] initWithResponse:response 
  15. data:[NSData dataWithBytes:" " length:1]]; 
  16. [super storeCachedResponse:cachedResponse forRequest:request]; 
  17. [cachedResponse release]; 
  18. [response release]; 
  19. return [super cachedResponseForRequest:request]; 
  20. @end 

首先判斷URL是否需攔截(判斷通過FilterManager類實現,類實現在此不列出)。如果需要,創建一個無內容的響應對象并把它存在cache中。有人可能會認為只需要返回假的響應對象就夠了,沒必要緩存它。但這樣會因響應對象被系統釋放而導致app crash。不知道為何為會這樣,可能是iOS的bug(Mac OS X 10.5.x也存在同樣問題,而10.4.x及更早的系統上沒有問題),也可能是URL Loading System內部類之間的依賴所致。所以我們先緩存響應對象。確保所有響應都是真實存在于緩存中,這也iOS希望的,最重要的是不會crash.

更新:因為假的響應是以大于0的大小來初始化的,看起來結緩存它也是必要的。

2.創建新的緩存:

接下來需要創建一個新的緩存并告訴iOS系統使用新的緩存代替默認的,這樣當URL Loading System檢測資源緩存時才會調用上面的代碼。這要在任意UIWebView開始加載頁面前做,顯然應該放在app啟動的時候:

  1. NSString *path = ...// the path to the cache file 
  2. NSUInteger discCapacity = 10*1024*1024
  3. NSUInteger memoryCapacity = 512*1024
  4. FilteredWebCache *cache = 
  5. [[FilteredWebCache alloc] initWithMemoryCapacity: memoryCapacity 
  6. diskCapacity: discCapacity diskPath:path]; 
  7. [NSURLCache setSharedURLCache:cache]; 
  8. [cache release]; 

這里需要提供一個緩存存儲路徑。緩存文件由NSURLCache對象自動生成,我們無需事先創建文件,但要定義緩存文件所存位置(必須是應用程序“沙盒”內,如“tmp”目錄或是“Document”目錄)

這就是實現UIWebView基于URL進行請求過濾的所有內容,看起來其實并不復雜

注:如果過濾規則在app運行過程中會改變,你需要從緩存中刪除假的響應。NSURLCache提供了刪除方法,所以這不是問題。如果過濾規則不會改變,則無需關心

責任編輯:chenqingxiang 來源: CocoaChina
相關推薦

2011-08-02 11:07:42

iOS開發 UIWebView

2011-08-08 18:26:52

UIWebView圖片

2013-03-26 09:24:57

iOS內置URL sc

2015-08-17 09:46:15

UIjs

2011-08-08 17:59:22

UIWebView網絡網頁

2012-04-23 11:00:56

iOS開發Objective-CJavaScript

2012-06-01 11:02:33

2011-08-17 10:09:25

iPhone開發UIWebViewTouch事件

2016-09-23 20:30:54

Javascriptuiwebview富文本編輯器

2011-07-21 17:00:59

iPhone UIWebView Status Cod

2015-10-09 09:24:08

2015-06-11 09:52:40

iOS 9蘋果WWDC

2016-09-18 20:11:16

IOS10iPhone蘋果

2012-04-20 10:39:04

UppsiteiOSAndroid

2016-11-16 00:39:39

2014-06-27 09:34:03

AngularJS

2025-04-23 08:20:00

JavaScriptURLAPI

2021-01-14 10:00:57

Restful接口

2013-11-04 09:35:38

Firefox插件攔截FLASH

2015-10-10 09:45:29

點贊
收藏

51CTO技術棧公眾號

韩国三级电影一区二区| 久久悠悠精品综合网| 国产精品欧美久久久久一区二区| 国产精品伦子伦免费视频| 激情高潮到大叫狂喷水| gogogo高清免费观看在线视频| 欧洲精品久久一区二区| 巨乳诱惑日韩免费av| zzjj国产精品一区二区| 在线xxxxx| 日韩在线免费| 一区二区三区在线免费视频| 久久综合入口| 97在线公开视频| 亚洲精品社区| 在线日韩欧美视频| 国产大学生视频| 国产精品诱惑| 精品久久久久久亚洲精品| 丝袜足脚交91精品| 欧美一级免费片| 麻豆精品一区二区av白丝在线| 欧美精品国产精品日韩精品| 亚洲国产日韩一区无码精品久久久| 国产精品一区二区精品| 色www精品视频在线观看| 精品国产一区二区三区在线| 国产中文在线观看| 丁香六月久久综合狠狠色| 国产精品美女在线| 五月婷婷色丁香| 欧美久久影院| 久久精品成人欧美大片古装| 大地资源二中文在线影视观看| 欧美日韩黄网站| 欧美午夜精品一区二区三区| 91九色在线观看视频| 成人免费看片| 久久久噜噜噜久久中文字幕色伊伊| wwwxx欧美| 91久久精品国产91性色69| 国产午夜精品一区二区三区欧美 | 污污网站免费在线观看| 国产精品1024| 成人精品鲁一区一区二区| 成年人精品视频| 国产又黄又粗视频| 国产一区二区观看| 日韩精品免费在线观看| 中文字幕乱视频| 精品中文在线| 欧美一区日本一区韩国一区| 夜夜夜夜夜夜操| 欧美a一级片| 欧美视频日韩视频在线观看| 少妇高潮喷水久久久久久久久久| 操人在线观看| 性做久久久久久免费观看| 久久男人资源站| 亚洲综合影视| 一区二区三区四区在线播放| 永久免费网站视频在线观看| 国产一二三区在线观看| 国产精品久久久久影视| 亚洲欧美日韩另类精品一区二区三区| 久久国产精品高清一区二区三区| 久久先锋影音av鲁色资源网| 欧美极品一区二区| 黄色av网址在线免费观看| 久久美女艺术照精彩视频福利播放| 国产偷久久久精品专区| 色婷婷av一区二区三| 91在线观看一区二区| 欧美成人综合一区| 黄色在线小视频| 国产精品乱码一区二区三区软件| 成年人黄色在线观看| 国产盗摄在线观看| 亚洲一区中文在线| 免费看国产曰批40分钟| 中国字幕a在线看韩国电影| 欧美日韩亚洲精品一区二区三区| 国产精品第12页| 高清av一区| 91精品国模一区二区三区| 免费看91视频| 九九综合在线| 久久国内精品一国内精品| 日韩av色在线| 欧美日韩人妻精品一区二区三区| 欧美日本中文| 国产91对白在线播放| 波多野结衣爱爱| 国产一区二区网址| 国产精品国产精品国产专区不卡| 三级av在线| 中文字幕一区二区三区不卡| 欧美日韩dvd| 成人一区福利| 91麻豆精品国产91久久久久久| 亚洲乱妇老熟女爽到高潮的片 | 蜜桃精品成人影片| 日韩在线综合| 久久免费视频在线观看| 日韩黄色一级视频| 丁香桃色午夜亚洲一区二区三区| 日本一区二区久久精品| 黄色网址在线免费| 狠狠爱在线视频一区| 国模私拍视频在线观看| 噜噜噜狠狠夜夜躁精品仙踪林| 一区二区欧美亚洲| 99免费在线观看| 免费看日韩精品| 国产精品二区在线| av黄色在线观看| 五月天视频一区| 国产福利精品一区二区三区| 亚洲第一二三区| 欧美日本在线视频中文字字幕| www.亚洲激情| 99re热这里只有精品视频| 国产盗摄视频在线观看| av一区在线| 日韩av在线看| 九九九久久久久| 六月丁香婷婷久久| 欧美精品尤物在线| jizz一区二区三区| 91麻豆精品国产91久久久| 蜜桃av乱码一区二区三区| 在线综合亚洲| 不卡日韩av| 50度灰在线观看| www在线视频| 欧美日韩视频在线观看一区二区三区| 午夜男人的天堂| 最新精品国产| 国产又爽又黄的激情精品视频| 久久精品蜜桃| 日韩欧美中文第一页| 91精品啪在线观看国产| 亚洲精品极品少妇16p| 国产精品日韩在线观看| 狠狠v欧美ⅴ日韩v亚洲v大胸| 亚洲444eee在线观看| 性xxxxxxxxx| 欧美~级网站不卡| 成人免费视频a| 求av网址在线观看| 欧美日韩一级大片网址| 一区二区精品免费| 日韩电影在线看| 日韩av一级大片| 日韩成人影音| 国产一区二区三区视频免费| 亚洲精品一区二三区| 久久精品亚洲一区二区三区浴池 | 69精品无码成人久久久久久| 免费视频一区二区三区在线观看| 国产乱码精品一区二区三区卡| 牛牛精品在线| 亚洲激情在线观看| 久久久久久久久久久久久av| 91免费在线看| 免费日韩视频在线观看| 国产九一精品| 国产精品一区二区电影| 麻豆系列在线观看| 日韩美女在线视频| 久久露脸国语精品国产91| 北岛玲一区二区三区四区| 怡红院av亚洲一区二区三区h| 视频福利一区| 国产精品极品美女在线观看免费| av午夜在线| 91精品国产综合久久久久久| 久久午夜鲁丝片午夜精品| 99久久99精品久久久久久| 日av中文字幕| 91视频精品| 久久免费美女视频| 免费观看中文字幕| 爱高潮www亚洲精品| 亚洲91av视频| 岛国在线视频免费看| 91精品国产麻豆国产自产在线 | 伊人成综合网| 国产精品日本一区二区| 欧美亚洲大片| 久久综合五月天| 日本黄色不卡视频| 欧美在线色视频| 亚洲成人生活片| 99精品视频在线观看免费| 一级黄色香蕉视频| 欧美涩涩视频| 日本一区二区精品| 色妞ww精品视频7777| 欧日韩不卡在线视频| 欧美另类极品| 精品视频久久久久久| 国产精品视频一区二区三区,| 亚洲二区在线视频| 九一在线免费观看| 成人h精品动漫一区二区三区| 国产精品亚洲αv天堂无码| 综合亚洲视频| 日韩免费中文专区| 久久精品色播| 成人在线一区二区| 亚洲永久av| 欧美夫妻性视频| 成人av毛片| 亚洲娇小xxxx欧美娇小| 国产精品色综合| 91精品福利视频| 国产无码精品一区二区| 中文字幕一区二区不卡| 30一40一50老女人毛片| 国产成人av一区二区三区在线| 狠狠热免费视频| 亚洲久久视频| 人妻激情另类乱人伦人妻| 欧美三级伦理在线| 精品国产一区二区三区四区vr| 欧美一级网址| 国产精品99久久久久久久久久久久 | 成熟的女同志hd| 国产午夜精品一区二区| 色狠狠av一区二区三区香蕉蜜桃| 无码人妻丰满熟妇奶水区码| 亚洲自拍偷拍欧美| 国产午夜手机精彩视频| 中文字幕第一区| 最近中文字幕在线mv视频在线 | 成人在线观看黄色| 亚洲国产精品久久久| 国产高清视频免费观看| 91精品在线观看入口| 在线观看免费视频a| 在线影视一区二区三区| 日韩综合在线观看| 日韩欧美在线观看| 天天操天天操天天操天天| 婷婷亚洲久悠悠色悠在线播放| 波多野结衣不卡视频| 亚洲色图20p| 黄色录像二级片| 亚洲色图一区二区| 黄色片在线观看网站| 亚洲六月丁香色婷婷综合久久 | 亚洲日本乱码在线观看| 神马久久精品综合| 亚洲欧美视频在线观看视频| 人成免费在线视频| 中文字幕精品一区二区精品绿巨人| 性欧美一区二区| 国产精品福利影院| 国产美女福利视频| 亚洲黄色片在线观看| 青青草原在线免费观看| 亚洲午夜视频在线观看| 日本在线小视频| 精品毛片网大全| www.久久久久久久| 欧美色网一区二区| 国产福利资源在线| 精品国产一区a| 日本久久一级片| 欧美日韩一级大片网址| 91av久久久| 日韩亚洲欧美成人一区| 精品国产无码一区二区| 日韩欧美国产综合| 亚洲区小说区图片区| 亚洲美女视频网站| 麻豆app在线观看| 亚洲精品国精品久久99热 | 欧美无乱码久久久免费午夜一区| а中文在线天堂| 欧美亚洲国产一区二区三区va| 91高潮大合集爽到抽搐| 在线成人av网站| a视频免费在线观看| 亚洲国产女人aaa毛片在线| 天堂中文字幕av| 一区二区亚洲精品| 亚洲欧洲久久| 91精品婷婷色在线观看| 日本a级片在线播放| 亚洲一区二区免费看| 亚洲三级视频网站| 国产在线精品视频| 国产伦精品一区二区免费| 99re在线精品| 992在线观看| 亚洲二区在线视频| 波多野结衣高清在线| 欧美综合一区二区三区| 亚洲黄色片视频| 亚洲欧美精品一区| 好男人免费精品视频| 久久999免费视频| 中老年在线免费视频| 91在线网站视频| 啄木系列成人av电影| 中文字幕一区二区三区有限公司 | 日本少妇一区二区三区| 国产精品成久久久久| 无码粉嫩虎白一线天在线观看| 午夜在线视频观看日韩17c| 五月天av在线播放| 91色视频在线| 欧美日韩色视频| 大伊人狠狠躁夜夜躁av一区| 国产乱码一区二区| 亚洲美女av网站| 最新97超碰在线| 久久久亚洲欧洲日产国码aⅴ| 亚洲第一影院| 97人人模人人爽视频一区二区| 欧美日韩123| 久久男人资源站| 国产一区在线看| 久久国产精品影院| 亚洲最大的成人av| 国产免费无遮挡| 国产亚洲欧美视频| 波多野结衣在线播放| 91网站在线看| 欧美日韩性在线观看| 国产乱人伦精品一区二区三区| 日韩二区在线观看| 国产黄色三级网站| 亚洲成人午夜影院| 99久久久国产精品无码免费| 国产亚洲视频在线观看| 刘亦菲一区二区三区免费看| 亚洲自拍偷拍福利| 欧美精美视频| 六月丁香婷婷激情| 97精品电影院| 国产一级片免费看| 欧美一区二区三区男人的天堂| 在线观看h片| 国产99久久精品一区二区| 国产精品videossex| 成人在线免费观看视频网站| 蜜臀av在线播放一区二区三区| 男人的天堂官网| 日韩欧美在线播放| 深夜福利视频在线观看| 欧美孕妇孕交黑巨大网站| 亚洲国产欧美在线观看| 一区二区三区四区五区精品| 日本亚洲天堂网| av黄色在线免费观看| 在线观看91视频| 成年人视频在线观看免费| 日本人成精品视频在线| 日韩av二区| 手机版av在线| 亚洲人成在线观看一区二区| 国产又粗又大又爽视频| 一本色道久久综合亚洲精品小说 | 在线看日韩av| 99riav视频一区二区| 亚洲欧洲日韩综合二区| 美女视频黄 久久| 538精品视频| 欧美精品在线观看一区二区| 黄色网页网址在线免费| 国产精品久久波多野结衣| 极品中文字幕一区| 亚洲av无码一区二区三区网址 | 伊人网综合在线| 日韩中文字幕欧美| 午夜视频一区二区在线观看| 欧美国产视频一区| 久久久99精品久久| 黄色片视频免费| 深夜福利日韩在线看| 精品一区二区三区中文字幕视频 | 欧美在线一二三四区| 免费av在线播放| 99re在线视频观看| 免费视频一区| 四虎地址8848| 精品裸体舞一区二区三区| 在线一区av| 亚洲永久激情精品| 不卡的看片网站| 无码人妻aⅴ一区二区三区有奶水| 最好看的2019年中文视频| 一区二区三区亚洲变态调教大结局| 超碰成人免费在线| 中文字幕精品—区二区四季| 精品久久国产视频| 国产不卡av在线|