美文网首页iOS随记
WebView加载网络页面使用本地文件

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

作者: valiant_xin | 来源:发表于2017-03-24 11:46 被阅读89次

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

            安卓对接很快就成功了,直接就是监听到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并加载本地资源

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/idgxottx.html