iOS-使用Cordova框架实现原生与H5交互
1.环境搭建
可以参考http://www.knowsky.com/884672.html这篇文章。里面有详细介绍,这里不详述。
2.集成Cordova
2.1生成LIbCordova.a
![](https://img.haomeiwen.com/i5811440/9bf0cb15887a2aac.png)
环境搭建好之后你会有一个工程文件,沿上图路径打开CordovaLib.xcodeproj。这个其实是静态库生成的一个工程。按照静态库生成方法导出LIbCordova.a文件,并且需要用到 lipo -create命令合并真机和模拟器包,这里不多说。
![](http://upload-images.jianshu.io/upload_images/5811440-785af91b2201a0ac.png)
2.2将项目集成LIbCordova
新建一个工程,将生成的框架包拖到项目中,另外将config.xml、PLigins文件夹以及WWW文件夹拖入项目中,其中WWW使用folder references的形式添加。
![](http://upload-images.jianshu.io/upload_images/5811440-e520fd7e146a9dcd.png)
在Library Search Paths 中加入LibCordova.a 的路径(正常导入xcode会默认给你添加上)。
![](http://upload-images.jianshu.io/upload_images/5811440-83b2b8cc35714215.png)
Other Linker Flags 上加入-ObjC,否则程序会崩溃。
![](http://upload-images.jianshu.io/upload_images/5811440-dbd2a61ff4dd26ab.png)
运行一下工程,如果没报错或者崩溃,则说明集成Cordova成功了。
3 Cordova的使用
首先你需要一段H5代码,并把H5代码放到www目录下的index,html文件中。我的代码如下:
![](http://upload-images.jianshu.io/upload_images/5811440-34788bf87b4a6a46.png)
3.1 H5调原生
3.1.1 添加插件
创建HJPlugin001类(名字随意),并继承CDVPlugin。并实现test方法,这个方法名为H5调用时规定的。可见H5代码Cordova.exec(successFunction, failFunction, "001","test", [password]);。
![](http://upload-images.jianshu.io/upload_images/5811440-c0e7d91f73a8292a.png)
![](http://upload-images.jianshu.io/upload_images/5811440-46b63718b60b203a.png)
3.1.2 config.xml中添加插件配置
将下图那段代码加入到widget中即可。
![](http://upload-images.jianshu.io/upload_images/5811440-2621996dbe16a726.png)
完成上面两个步骤,H5调原生就大功告成了。
3.1.3 H5调原生的回调
![](http://upload-images.jianshu.io/upload_images/5811440-d6e4413a1cc60825.png)
完成以上几个步骤,就可以运行代码看看效果啦。
3.2 原生调H5
有些时候原生需要主动调H5,其实H5调原生的回调就是一种原生调H5。IOS在webView中封装了调用JS代码的方法,Cordova在这基础上封装了一个原生调H5的方法(evalJs:)。这是CDVCommandDelegate中的一个代理方法,H5调原生的回调方法也可以在里面找到。原生调H5的具体实现如下图。
![](http://upload-images.jianshu.io/upload_images/5811440-b0753dc085849691.png)
运行代码后效果如下:
![](http://upload-images.jianshu.io/upload_images/5811440-56ad03ff0d39a95f.png)
最后附上dome:https://github.com/jswsjian/H5-.git