0

我想用自定义的 Cordova iOS 插件做一些非正统的事情。从 JS 端我调用一个函数,它将回调保存在插件本机端的 memeber 变量中,如下所示:

-(void) setCallback:(CDVInvokedUrlCommand*)command {
  _callbackId = command.callbackId; 
}

这就是我所做的一切。我不会触发回调,因为稍后当本机端的某些条件变为真时,我会想要触发它。我在本机端编写了一个单独的方法来执行此操作:

-(void) fireCallback:(CDVInvokedUrlCommand*)command {
    CDVPluginResult *pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
    [self.commandDelegate sendPluginResult:pluginResult callbackId:saveStateCallbackId];
}

这个方法并不意味着从 JS 端调用。相反,我想在本机方面的某些条件变为真时调用它。问题是我想从 AppDelegate.m 调用这个方法,但是我如何获得对我的插件实例的引用以便调用该方法?

4

2 回答 2

2

愚蠢的我...我不需要所有这些技巧。原来我可以像这样直接调用js:

[webview stringByEvaluatingJavaScriptFromString:@"myJavascriptFunction()"];

http://blog.techno-barje.fr//post/2010/10/06/UIWebView-secrets-part3-How-to-properly-call-ObjectiveC-from-Javascript/

我可以像这样在 AppDelegate 中引用 webview:self.viewController.webView

问题解决了。

于 2014-02-28T23:52:12.247 回答
0

AppDelegate应该有一个viewController成员允许您以这种方式访问​​您的插件实例

PluginClass* pluginInstance = [self.viewController getCommandInstance:@"PluginName"];
于 2016-01-23T09:38:04.367 回答