错误:方法'methodName'未在插件'插件'中定义 - Phonegap 3.0 iOS

时间:2013-07-22 19:18:41

标签: iphone ios objective-c cordova

我正在尝试使用phonegap 3.0开发iOS应用程序。 该应用程序使用sharekit插件和GAPlugin进行phonegap,当我使用phonegap 2.9时它正在运行 升级后它会编译,当我尝试访问插件中的函数时,它会给我这个错误。

ERROR: Method 'share:' not defined in Plugin 'ShareKitPlugin'
2013-07-22 22:05:06.976  -[CDVCommandQueue executePending] [Line 116] FAILED pluginJSON = [
  "INVALID",
  "ShareKitPlugin",
  "share",
  [
    "test",
    "http:\/\/www.test.com"
  ]
]

ERROR: Method 'initGA:' not defined in Plugin 'GAPlugin'
2013-07-22 22:05:06.977 -[CDVCommandQueue executePending] [Line 116] FAILED pluginJSON = [
  "GAPlugin1900170756",
  "GAPlugin",
  "initGA",
  [
    "UA-XXXXXX-11",
    10
  ]
]

3 个答案:

答案 0 :(得分:8)

如果你在phonegap 3.0中使用“旧”插件,你应该在插件方法的本机代码中编写hack。例如:

- (void)register:(CDVInvokedUrlCommand*)command
{
    self.callbackId = command.callbackId;
    NSArray *arguments = command.arguments;
    NSDictionary *options = [arguments objectAtIndex:0];

而不是

- (void)register:(NSMutableArray *)arguments withDict:(NSMutableDictionary *)options
    self.callbackId = [arguments pop];

答案 1 :(得分:7)

GAPlugin尚不支持Phonegap在2.1.0中引入的新插件签名。 Phonegap / Cordova 3.0.0不再支持旧的插件签名。

新签名是:

- (void)myMethod:(CDVInvokedUrlCommand*)command; 

GAPlugin仍然使用:

  • (void)initGA:(NSMutableArray *)参数withDict:(NSMutableDictionary *)options;

(有关详情,请参阅https://github.com/phonegap-build/GAPlugin/blob/master/src/ios/GAPlugin.h)。

同样似乎适用于ShareKit插件。

答案 2 :(得分:2)

根据Floerkem的回答,我修改了两个插件

这里的GAPlugin https://github.com/phonegap-build/GAPlugin/issues/16
在这里分享KitPlugin https://github.com/mohamedfasil/ShareKitPlugin-for-Phonegap-3.0