原文網址:
http://www.cnblogs.com/ToFlying/p/4168887.html?utm_source=tuicool&utm_medium=referral?
//ios 插件開發(fā)
//Echo iOS Plugin Example
//配置? 在config.xml中
//Echo 頭文件
#import@interface CDVEcho:CDVPlugin
//實例方法
-(void) echo:(CDVInvokedUrlCommand *) command;
@end
//實現(xiàn)部分
#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被執(zhí)行掉,常用操作之一
//^這個東西化戳,說明一個塊函數(shù)稠歉,()這個東西是塊里面需要的參數(shù){}執(zhí)行體
//需要注意的是 weakSelf 贸铜, 不是直接使用self萝映, 防止循環(huán)引用
[self.commandDelegate runInBackground:^{}];
JavaScript:1.successFunction:一個成功的回調函數(shù)2.failFunction:一個錯誤回調函數(shù)3.service: 一個本地類名4.action:本地類方法名5.args:數(shù)組的參數(shù)傳遞到本地環(huán)境? exec(,,,, []);
Sample:
//定義
/**
*? ? 第一個參數(shù)是當前模塊的編號
*? ? 第二個參數(shù)是回調函數(shù)的處理
*/
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"http://調用的使用使用的方法
]
}];
module.exports.metadata =
// TOP OF METADATA
{
"com.jajacy.cordova.message": "0.0.1",
}
// BOTTOM OF METADATA
});
//調用
window.echo('Hello Echo!',function(data){
alert(data);
});