我們可以利用 NSURLProtocol 做什么

今天和大家聊一聊 NSURLProtocol,可能你已經(jīng)聽說過它。因篇幅有限,這里不講解具體的使用方式,主要是和大家聊一聊我們可以利用 NSURLProtocol 做的一系列事情,權(quán)當(dāng)拋磚引玉,大家可以根據(jù)自己的需要去深入了解。

簡單來說 NSURLProtocol 是蘋果 URL Loading System 中的一個(gè)抽象類。通過實(shí)現(xiàn)其子類并注冊到 app 中,我們可以攔截 app 中的網(wǎng)絡(luò)請求。那么攔截網(wǎng)絡(luò)請求可以做什么呢?這里舉幾個(gè)小例子:

  • app 內(nèi)置了測試服、正式服的切換開關(guān),需要通過開關(guān)一鍵切換所有網(wǎng)絡(luò)請求使用的 server地址。
  • 項(xiàng)目內(nèi)部分模塊使用了 ReactNative,需要?jiǎng)討B(tài)配置由前端發(fā)出的網(wǎng)絡(luò)請求 server 地址(特殊在于雖然是前端發(fā)出,但并非來自 webview )。這個(gè)例子和例 1 類似。
  • 項(xiàng)目內(nèi)含有 hybrid 模塊。對 hybrid 頁面加速的一個(gè)策略,可以是客戶端在合適時(shí)機(jī)提前緩存資源文件,并且以與 webview 加載資源的路徑相對應(yīng)的方式存儲在本地。這樣當(dāng) webview 加載資源時(shí),通過攔截判斷是否是本地已經(jīng)存在的資源的請求,如果是,則使用本地資源構(gòu)造 response 。這樣可以顯著提升被過多資源請求影響的加載速度。
  • 限制 app 內(nèi) webview 的跳轉(zhuǎn)行為,例如禁止向某域名下的跳轉(zhuǎn),或者對于某個(gè)域名下的跳轉(zhuǎn)做重定向操作。當(dāng)然這些使用 webview 的代理方法也可以做到。
  • 對于 app 內(nèi)發(fā)出的所有網(wǎng)絡(luò)請求,需要添加公共的 header 內(nèi)容。
  • 需要統(tǒng)計(jì) app 內(nèi)各處對某個(gè) api 的調(diào)用次數(shù)等數(shù)據(jù)。
  • 需要統(tǒng)計(jì) app 內(nèi)的網(wǎng)絡(luò)請求失敗率。

參考鏈接:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容