由于公司审核要求,本来无app端的项目突然需要在短时间内提供android端app。所以最快速的方式就是H5套壳啦。
项目经理跟我说这个需求的时候我给出的工期是大约一个周,毕竟要进行一些交互上的转换吗,比方说dialog,js调用等,但实际的情况说明自己的想法还是太年轻。
进入正题。套壳当然要跟前端对接,前端给出的工期大约是两个周。因为是将微信公众号端的功能移植到android端,困难点有两个:一是将调用微信api的功能转换为android原生实现;二是前端vue框架怎样与android端通信的问题(vue框架发布后为框架自动编译的文件,为一个index.html文件和其它编译整理过得js、css等文件--及所见非所得。而我要与前端打交道的就是这个index.html文件)。首先我们尝试了传统的加载html方式,只不过是将前端vue框架生成的静态代码放到了assets目录下,加载index.html,加载失败,报错:许多js无法调用。遂放弃。
考虑到前端使用了vue框架的问题,我们选择的是使用桥接模式进行尝试。工程导入jsbridge Library包,使用
BridgeWebView代替原WebView。通过webview.registerHandler()方法,通过js方法名参数与前端进行传参,通过回调方法进行返回参数。与之前一样还是使用vue静态代码加载,这里要说一下为什么要使用静态代码的问题:前端考虑框架的问题所以考虑将框架生成的代码都放到了android端这里(后期证明放不放这里都可以)。好吧,这样通过桥接的方式实现了通信但是比较奇葩的是,参数传递的问题。由于我们html首页需要瑜伽在部分字典数据,所以要讲数据暂存到android端&