我正在尝试遵循此处的指南:
http://docs.phonegap.com/en/3.1.0/guide_hybrid_plugins_index.md.html#Plugin%20Development%20Guide
尤其是这个
http://docs.phonegap.com/en/3.1.0/guide_platforms_ios_plugin.md.html#iOS%20Plugins
我完全按照所有步骤操作,但不知何故该插件无法正常工作。当我尝试调用 JavaScript 部分时,未执行本机 echo 方法。
为了确保插件被加载,我实现了 pluginInitialize 方法。插件似乎加载正常。
日志输出:
2013-10-28 13:04:16.824 AirPrototype[2288:18e03] Multi-tasking -> Device: YES, App: YES
2013-10-28 13:04:16.840 AirPrototype[2288:18e03] Echo plugin init.
2013-10-28 13:04:16.841 AirPrototype[2288:18e03] [CDVTimer][echo] 0.748992ms
2013-10-28 13:04:16.841 AirPrototype[2288:18e03] [CDVTimer][TotalPluginStartup] 1.354039ms
实施:
#import "Echo.h"
#import "../Cordova/CDV.h"
#import "../Cordova/CDVPlugin.h"
@implementation Echo
- (void)echo:(CDVInvokedUrlCommand*)command
{
CDVPluginResult* pluginResult = nil;
NSString* echo = [command.arguments objectAtIndex:0];
if (echo != nil && [echo length] > 0) {
NSLog(@"echo called with arg %@",echo);
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:echo];
} else {
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR];
}
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}
- (void)pluginInitialize
{
NSLog(@"Echo plugin init.");
}
@end
我已经注册了插件:
<feature name="Echo">
<param name="ios-package" value="Echo" />
<param name="onload" value="true" />
</feature>
创建了一个javascript函数定义:
window.echo = function(str, callback) {
cordova.exec(callback, function(err) {
callback('Nothing to echo.');
}, "Echo", "echo", [str]);
};
并调用插件
window.echo('echome', function(echoValue) {
alert(echoValue == 'echome'); // should alert true.
});
但它不起作用。
我只注意到 Safari 调试器抱怨:
加载资源失败:在此服务器上找不到请求的 URL。
找不到的 URL 似乎是 file:///!gap_exec?1382961871341
有人已经有这个问题了吗?还是我做错了什么?我在这里想念什么?
任何建议都受到高度赞赏。
问候议员