我知道github上有很多关于phonegap / cordova插件的例子,但我看到插件的构建方式有很多不一致之处。结构看起来相同(大多数情况下),但几乎每个代码和实现看起来都不一样。它让我问了几个问题。
2.9文档说使用在配置中声明插件的方法,但我得到了使用该方法的构建警告。我应该同时使用吗?
在javascript中,声明/实例化插件的正确方法是什么?
我是通过window.MyPlugin.myMethod引用我的插件方法还是只是window.myMethod?
我有更多问题,但代码会很棒。
对于适用于iOS平台的cordova 2.9,有没有人有一个绝对简单的自定义插件示例?
答案 0 :(得分:1)
这是一个非常简单的插件,我写了几天,它只是测试构建一个基于iOS的Cordova插件。
JS:
var tester = function() {};
tester.prototype.test = function () {
cordova.exec(
function(result) {
navigator.notification.alert('test plugin returned: '+result);
},
function() {
navigator.notification.alert('test plugin error');
},
'TestPlugin',
'test',
['Your test string']
);
};
if(!window.plugins) {
window.plugins = {};
}
if (!window.plugins.tester) {
window.plugins.tester = new tester();
}
跟:
<button onclick="window.plugins.tester.test()">TEST PLUGIN</button>
TestPlugin.h:
#import <Cordova/CDV.h>
@interface TestPlugin : CDVPlugin
- (void)test:(CDVInvokedUrlCommand*)command;
@end
TestPlugin.m:
#import "TestPlugin.h"
#import <Cordova/CDV.h>
@implementation TestPlugin
- (void)test:(CDVInvokedUrlCommand*)command
{
CDVPluginResult* pluginResult = nil;
NSString* testString = [command.arguments objectAtIndex:0];
if (testString != nil && [testString length] > 0) {
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:testString];
} else {
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR];
}
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}
@end
添加到/platforms/ios/{PROJECT_NAME}/Resources/config.xml:
<plugin name="TestPlugin" value="TestPlugin" />