如何获取对我的 Cordova iOS 插件实例的引用?

Posted

技术标签:

【中文标题】如何获取对我的 Cordova iOS 插件实例的引用?【英文标题】:How to get a reference to my Cordova iOS plugin instance? 【发布时间】:2014-02-28 22:45:15 【问题描述】:

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

-(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 中调用此方法,但是如何获取对插件实例的引用以便调用该方法?

【问题讨论】:

【参考方案1】:

真傻……我不需要所有这些技巧。原来我可以像这样直接调用js:

[网页浏览 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

问题解决了。

【讨论】:

【参考方案2】:

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

PluginClass* pluginInstance = [self.viewController getCommandInstance:@"PluginName"];

【讨论】:

以上是关于如何获取对我的 Cordova iOS 插件实例的引用?的主要内容,如果未能解决你的问题,请参考以下文章

Cordova iOS 自定义插件:处理内存警告

获取 Cordova 插件头文件路径

如何使用 Cordova 获取 iOS 用户设置的设备名称?

如何在 IOS cordva 应用程序中添加 cordova 插件?

如何在 Sencha Touch 代码中获取 Cordova 插件的参考

如何在 mac 中安装适用于 ios 的 Cordova 摄像头插件