WebView加载网络页面使用本地文件

        前两天没事,经理说网页加载缓慢,想要把几个引擎文件放到本地进行加载。好吧,老大发话,小弟只能听从就是了。

        安卓对接很快就成功了,直接就是监听到request然后进行分别响应,没几分钟就完成了。结果等接iOS的时候,直接有点懵逼了,一直没有加载成功。

开始费尽心机在网络上搜索资源,大部分都是要么全都是加载网上的资源,要么都是html、js和css等文件一起存放到本地,心疼自己半天。

不过,总还是有先驱者先一步探路,让我们能够站在他们肩膀上望得更远。感谢小懒在路上还有stack上的Sami Samhuri和Nick Weaver先驱们,向你们致敬。

话不多说,照样先看代码:

1.新建一个自定义类,继承自NSURLProtocol,用来进行监听web中request,并根据情况进行处理。

自定义继承NSURLProtocol类

2.实现自定义类

监听request的url

3.当在上一个方法中返回YES的时候,会进入到startLoading方法中。

完成替换工作

        原本加载的是网络上的js文件,更改成加载本地的js文件。这个地方有一个小坑,我原本想定义一个全局变量表示文件名偷懒一下,下方就不用进行截取url了。结果就因为这个问题坑了我90%以上的时间。

        最后通过打印信息我发现,如果定义全局变量的时候,我加载多个文件,它根本没有反应过来,所加载的文件全都是同一个文件。实在没有办法,只能通过url进行剥离文件名称了。

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

注册

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

最后,感谢先驱者们的技术分享。

参考链接:

iOS WebView remote html with local image files

IOS的WebView请求远程html并加载本地资源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容