【问题标题】:How to get a reference to my Cordova iOS plugin instance?如何获取对我的 Cordova iOS 插件实例的引用?
【发布时间】: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 中调用此方法,但是如何获取对插件实例的引用以便调用该方法?

【问题讨论】:

    标签: ios cordova cordova-plugins


    【解决方案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"];
      

      【讨论】:

        猜你喜欢
        • 2019-09-10
        • 2011-10-26
        • 2014-01-26
        • 2021-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-25
        相关资源
        最近更新 更多