我想用自定义的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调用此方法,但是如何获取对插件实例的引用以便我可以调用该方法?
答案 0 :(得分:2)
傻傻的我......我不需要所有这些技巧。结果我可以像这样直接调用js:
[网页视图 stringByEvaluatingJavaScriptFromString:@ “myJavascriptFunction()”];
我可以在AppDelegate中引用webview,如下所示:self.viewController.webView
问题解决了。
答案 1 :(得分:0)
AppDelegate
应该有一个viewController
成员,允许您以这种方式访问您的插件实例
PluginClass* pluginInstance = [self.viewController getCommandInstance:@"PluginName"];