原文网址:
http://www.cnblogs.com/ToFlying/p/4168887.html?utm_source=tuicool&utm_medium=referral
//ios 插件开发
//Echo iOS Plugin Example
//配置 在config.xml中
//Echo 头文件
#import@interface CDVEcho:CDVPlugin
//实例方法
-(void) echo:(CDVInvokedUrlCommand *) command;
@end
//实现部分
#import "CDVEcho.h"
#import@implementation CDVEcho
-(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(,,,, []);
Sample:
//定义
/**
* 第一个参数是当前模块的编号
* 第二个参数是回调函数的处理
*/
cordova.define("com.jajacy.cordova.message.echo", function(require, exports, module) {
var exec = require('cordova/exec');
var platform = require('cordova/platform');
/**
* Provides access to Echo on the device.
* 在设备上提供通知。
*/
module.exports = {
/**
* Demo
* @param {String} message
* @param {Function} completeCallback
*/
echo: function(message,callback) {
exec(callback, function(err){
callback('Nothing to echo.');
}, "Echo", "echo", [message]);
}
};
});
//cordova_plugins.js 插件配置
cordova.define('cordova/plugin_list', function(require, exports, module) {
module.exports = [{
"file": "plugins/com.JajaCy.cordova.echo/www/echo.js",//插件文件的路径
"id": "com.jajacy.cordova.message.echo",//插件模块的编号
"merges": [
"window"//调用的使用使用的方法
]
}];
module.exports.metadata =
// TOP OF METADATA
{
"com.jajacy.cordova.message": "0.0.1",
}
// BOTTOM OF METADATA
});
//调用
window.echo('Hello Echo!',function(data){
alert(data);
});
网友评论