1.环境布置
iOS下JS与OC互相调用(七)--Cordova 基础 -
出错:
cordova -v 报错,必须用sodu cordova -v-布布扣-
sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config
二 使 用
来源:iOS下JS与OC互相调用(八)--Cordova详解+实战 -
1.在插件中实现JS要调用的原生方法,插件要继承自CDVPlugin,示例代码如下:
2.配置插件,是在config.xml的widget中添加自己创建的插件。
3.JS调用OC。 cordova.exec()
// successCallback : 成功的回调方法
// failCallback : 失败的回调方法
// server : 所要请求的服务名字,就是插件类的名字
// action : 所要请求的服务具体操作,其实就是Native 的方法名,字符串。
// actionArgs : 请求操作所带的参数,这是个数组。
cordova.exec(successCallback, failCallback, service, action, actionArgs);
haleyPlugin 控件中 实现JS调用OC
4.OC调用JS
如何将Native的结果回调给JS ?
这里有两种方式:第一种是直接执行JS,调用UIWebView 的执行js 方法。示例代码如下:
// 将分享结果返回给jsNSString*jsStr = [NSString stringWithFormat:@"shareResult('%@','%@','%@')",title,content,url];
[self.commandDelegate evalJs:jsStr];
第二种是,使用Cordova 封装好的对象CDVPluginResult和API。
使用这种方式时,在JS 调用原生功能时,必须设置执行成功的回调和执行失败的回调。即设置cordova.exec(successCallback, failCallback, service, action, actionArgs)的第一个参数和第二个参数
5.如何获取JS 传过来的参数呢?
CDVInvokedUrlCommand参数,其实有四个属性,分别是arguments、callbackId、className、methodName。其中arguments,就是参数数组。
看一个获取参数的示例代码:
原理:iOS Hybrid 框架 ——PhoneGap -