http://www.tuicool.com/articles/73mmmea
//ios 插件开发 //Echo iOS Plugin Example //配置 在config.xml中 <platform name="ios"> <config-file target="config.xml" parent="/*"> <feature name="Echo"> <param name="ios-package" value="Echo" /> </feature> </config-file> </platform> //Echo 头文件 #import <Cordova/CDC.h> @interface Echo:CDVPlugin //实例方法 -(void) echo:(CDVInvokedUrlCommand *) command; @end //实现部分 #import "Echo.h" #import <Cordova/CDC.h> @implementation Echo -(void) echo:(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 //线程处理 - (void)myPluginMethod:(CDVInvokedUrlCommand*)command { // Check command.arguments here. [self.commandDelegate runInBackground:^{ NSString* payload = nil; // Some blocking logic... CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:payload]; // The sendPluginResult method is thread-safe. [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; } //^{}:用来等待queue里的最后一个block被执行掉,常用操作之一 //^这个东西,说明一个块函数,()这个东西是块里面需要的参数{}执行体 //需要注意的是 weakSelf , 不是直接使用self, 防止循环引用 [self.commandDelegate runInBackground:^{}]; JavaScript: 1.successFunction:一个成功的回调函数 2.failFunction:一个错误回调函数 3.service: 一个本地类名 4.action:本地类方法名 5.args:数组的参数传递到本地环境 exec(<successFunction>, <failFunction>, <service>, <action>, [<args>]);
Example: window.echo = function(str, callback) { cordova.exec(callback, function(err) { callback('Nothing to echo.'); }, "Echo", "echo", [str]); };