</pre> 最近在做一个APP采用的是Hybrid模式开发,跨平台开发速度快 ,本APP才用的是开发框架是 cordova + ionic +angularjs 模式开发,才开发中由于功能需求,需要H5页面与Native code 交互 也就是H5与Java交互(android)、H5与Object-C交互(IOS)<p></p><p> 该功能的实现是在用自定义Cordova 插件方式实现:</p><p> 实现方式:</p><p> 1、下载cordova 插件开发工具</p><p> 在终端输入:npm install -g plugman</p><p></p><p> 2、下载成功后新建插件</p><p> plugman create --name 插件名称 --plugin_id 插件ID --plugin_version 版本号</p><p> 注意:把中文改成需要的内容,插件生成路径问终端打开的路径</p><p> 3、cd 命令进入到插件路径内</p><p> cd 插件名称</p><p> 4、为插件添加支持平台</p><p> plugman platform add --platform_name android plugman platform add --platform_name ios</p><p> 上面添加了两个平台的支持android 、ios</p><p></p><p>插件进本制作完成,以IOS为例 打开 src/ios文件会看到Object-c文件</p><p></p><pre name="code" class="objc">/********* IosJSPlug.m Cordova Plugin Implementation *******/
#import <Cordova/CDV.h>
@interface IosJSPlug : CDVPlugin {
// Member variables go here.
}
- (void)coolMethod:(CDVInvokedUrlCommand*)command;
@end
@implementation IosJSPlug
- (void)coolMethod:(CDVInvokedUrlCommand*)command
{
CDVPluginResult* pluginResult = nil;
NSString* echo = [command.arguments objectAtIndex:0];
if (echo != nil && [echo length] > 0) {
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:echo];
} else {
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR];
}
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}
@end
先不要做修改等运行出效果后在改
5、修改JS文件;路径地址:www/**.js
var exec = require('cordova/exec');
var MyIOSPlugin = {
/**
* 调用IOS方法
* @param method 要调用IOS插件的方法名
* @param parameter 参数[数组]
* @param success 成功回调
* @param fail 失败回调
* @returns {*}
*/
nativeFunction: function(method, parameter, success, fail) {
return Cordova.exec(success, fail, "IosJSPlug", method, parameter);
}
};
window.plugins=window.plugins || {};
window.plugins.MyIOSPlugin=MyIOSPlugin
module.exports = MyIOSPlugin;
最关键的地点是:
Cordova.exec(success, fail, "IosJSPlug", method, parameter);
</pre><p></p><p>IOSJSPlug是我的Object-C 文件</p><p></p><p>6、将插件装入倒项目中 该命令需要终端路径在项目根目录下执行</p><p></p><p class="p1"><span class="s1">cordova plugin add ../IosJSPlug</span></p><p></p><p>7、然后在项目中调用该方法就可以了</p><p> </p><p></p><p><pre name="code" class="javascript"> window.plugins.MyIOSPlugin.nativeFunction("coolMethod",['Hello Cordova Plugin'],
function(result) {
alert("Success: \r\n"+result);
},
function(error) {
alert("Error: \r\n"+error);
}
);
//locals.setObject("collection",new Map());
}
由于时间观念写的不全,不懂的可以留言