WebView加載網(wǎng)絡(luò)頁面使用本地文件

? ? ? ? 前兩天沒事,經(jīng)理說網(wǎng)頁加載緩慢,想要把幾個引擎文件放到本地進行加載。好吧,老大發(fā)話,小弟只能聽從就是了。

? ? ? ? 安卓對接很快就成功了,直接就是監(jiān)聽到request然后進行分別響應(yīng),沒幾分鐘就完成了。結(jié)果等接iOS的時候,直接有點懵逼了,一直沒有加載成功。

開始費盡心機在網(wǎng)絡(luò)上搜索資源,大部分都是要么全都是加載網(wǎng)上的資源,要么都是html、js和css等文件一起存放到本地,心疼自己半天。

不過,總還是有先驅(qū)者先一步探路,讓我們能夠站在他們肩膀上望得更遠。感謝小懶在路上還有stack上的Sami Samhuri和Nick Weaver先驅(qū)們,向你們致敬。

話不多說,照樣先看代碼:

1.新建一個自定義類,繼承自NSURLProtocol,用來進行監(jiān)聽web中request,并根據(jù)情況進行處理。

自定義繼承NSURLProtocol類

2.實現(xiàn)自定義類

監(jiān)聽request的url

3.當(dāng)在上一個方法中返回YES的時候,會進入到startLoading方法中。

完成替換工作

? ? ? ? 原本加載的是網(wǎng)絡(luò)上的js文件,更改成加載本地的js文件。這個地方有一個小坑,我原本想定義一個全局變量表示文件名偷懶一下,下方就不用進行截取url了。結(jié)果就因為這個問題坑了我90%以上的時間。

? ? ? ? 最后通過打印信息我發(fā)現(xiàn),如果定義全局變量的時候,我加載多個文件,它根本沒有反應(yīng)過來,所加載的文件全都是同一個文件。實在沒有辦法,只能通過url進行剝離文件名稱了。

4.最后一步,在需要使用的地方添加注冊。

注冊

OK,到這里也就全部成功了。

最后,感謝先驅(qū)者們的技術(shù)分享。

參考鏈接:

iOS WebView remote html with local image files

IOS的WebView請求遠程html并加載本地資源

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

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

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