如何获取对我的 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 用户设置的设备名称?
如何在 IOS cordva 应用程序中添加 cordova 插件?