gpt4 book ai didi

ios - iOS 上的 Cordova 3.0 : Plugin method not being called

转载 作者:行者123 更新时间:2023-11-28 22:23:34 24 4
gpt4 key购买 nike

我正在尝试按照位于此处的指南进行操作:

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 部分时, native 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

有人遇到过这个问题吗?还是我做错了什么?我在这里缺少什么?

非常感谢任何建议。

问候语国 session 员

最佳答案

经过一些研究和挖掘代码后,它似乎是一个 Phonegap/Cordova 错误。

只有在将 CDVViewController 作为 subview 添加到常规 UIViewController 时才会出现此问题。

在这种情况下,类 CDVURLProtocol 的 viewControllerForRequest 方法无法找到正确的 ViewController 类。我只是做了一个快速 hack hack 并在任何情况下返回我唯一的 CDVViewController。

也许我会修复它并稍后提交补丁。

关于ios - iOS 上的 Cordova 3.0 : Plugin method not being called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19634361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com