需求:
项目中有很多对特殊URL字符的特殊处理,像公共的有设置标题,拨打电话,重新加载,拍照,上传,下载等。同时,具体的业务模块也有自己对于的业务逻辑,像网页上的赞,踩,大图浏览,聊天,地图,音视频之类的。因为会有很多的页面会对URL进行拦截处理,很多模块都有对同一公共业务的处理,所以基于路由分发机智,开发了一套拦截处理逻辑。
实现:
首先,要有一个拦截组件,对外提供一个一个方法,传参是要处理的URL,当前的webView,以及当前的request。返回值是处理结果。
其次,拦截组件要提供一个具体处理拦截的类的基类,该基类提供如下几组方法,能否处理拦截和处理拦截的方法,能否处理返回和处理返回的方法,能否得到导航右侧view和得到导航右侧view的方法,能否处理加载完成和处理加载完成的方法,能否处理加载失败和处理加载失败的方法。公共拦截处理类和业务拦截处理类要继承该基类,同时实现基类的方法,处理对应的拦截。
最后,在每个组件初始化的时候,都要向拦截组件注册自己的拦截处理类,拦截组件做记录。当有特殊的URL需要处理时,调用拦截组件,然后拦截组件遍历注册的拦截类,然后将URL分发给对应业务拦截类处理。
备注:要做一些异常的记录,像是同一个URL有多个拦截处理,URL无拦截处理却被分发等等。
网友评论