前两天没事,经理说网页加载缓慢,想要把几个引擎文件放到本地进行加载。好吧,老大发话,小弟只能听从就是了。
安卓对接很快就成功了,直接就是监听到request然后进行分别响应,没几分钟就完成了。结果等接iOS的时候,直接有点懵逼了,一直没有加载成功。
开始费尽心机在网络上搜索资源,大部分都是要么全都是加载网上的资源,要么都是html、js和css等文件一起存放到本地,心疼自己半天。
不过,总还是有先驱者先一步探路,让我们能够站在他们肩膀上望得更远。感谢小懒在路上还有stack上的Sami Samhuri和Nick Weaver先驱们,向你们致敬。
话不多说,照样先看代码:
1.新建一个自定义类,继承自NSURLProtocol,用来进行监听web中request,并根据情况进行处理。
自定义继承NSURLProtocol类2.实现自定义类
监听request的url3.当在上一个方法中返回YES的时候,会进入到startLoading方法中。
完成替换工作原本加载的是网络上的js文件,更改成加载本地的js文件。这个地方有一个小坑,我原本想定义一个全局变量表示文件名偷懒一下,下方就不用进行截取url了。结果就因为这个问题坑了我90%以上的时间。
最后通过打印信息我发现,如果定义全局变量的时候,我加载多个文件,它根本没有反应过来,所加载的文件全都是同一个文件。实在没有办法,只能通过url进行剥离文件名称了。
4.最后一步,在需要使用的地方添加注册。
注册OK,到这里也就全部成功了。
最后,感谢先驱者们的技术分享。
参考链接:
网友评论