Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IBM Worklight:创建插件时调用IOS Nativecode_Javascript_Ios_Objective C_Ibm Mobilefirst - Fatal编程技术网

Javascript IBM Worklight:创建插件时调用IOS Nativecode

Javascript IBM Worklight:创建插件时调用IOS Nativecode,javascript,ios,objective-c,ibm-mobilefirst,Javascript,Ios,Objective C,Ibm Mobilefirst,我正在尝试将iOS本机代码集成到我的Worklight应用程序中 #import <Foundation/Foundation.h> #import <Cordova/CDV.h> @interface HelloWorldPlugin : CDVPlugin { UINavigationController *navi; }

我正在尝试将iOS本机代码集成到我的Worklight应用程序中

           #import <Foundation/Foundation.h>
           #import <Cordova/CDV.h>

          @interface HelloWorldPlugin : CDVPlugin
          {
             UINavigationController *navi;
          }
          -(void)sayHello:(CDVInvokedUrlCommand*)command;
我已使用以下代码创建了Cordova插件:

           #import <Foundation/Foundation.h>
           #import <Cordova/CDV.h>

          @interface HelloWorldPlugin : CDVPlugin
          {
             UINavigationController *navi;
          }
          -(void)sayHello:(CDVInvokedUrlCommand*)command;
HelloWorldPlugin.h

           #import <Foundation/Foundation.h>
           #import <Cordova/CDV.h>

          @interface HelloWorldPlugin : CDVPlugin
          {
             UINavigationController *navi;
          }
          -(void)sayHello:(CDVInvokedUrlCommand*)command;
上述代码正在运行。接下来,我创建了一个BarcodeScannerViewController类。它包含:BarcodeScannerViewController.h、BarcodeScannerViewController.m和BarcodeScannerViewController.xib

           #import <Foundation/Foundation.h>
           #import <Cordova/CDV.h>

          @interface HelloWorldPlugin : CDVPlugin
          {
             UINavigationController *navi;
          }
          -(void)sayHello:(CDVInvokedUrlCommand*)command;
我需要调用BarcodeViewController,以便实现条形码的功能。
在上面的HelloWorldPlugin.m中,我修改了下面的代码,以移动到BarcodeScannerViewController

           #import <Foundation/Foundation.h>
           #import <Cordova/CDV.h>

          @interface HelloWorldPlugin : CDVPlugin
          {
             UINavigationController *navi;
          }
          -(void)sayHello:(CDVInvokedUrlCommand*)command;
        @implementation HelloWorldPlugin

         -(void)sayHello:(CDVInvokedUrlCommand *)command
         {
       NSString *responseString=[NSString stringWithFormat:@"Hello........World %@",
  [command.arguments objectAtIndex:0]];

   CDVPluginResult *pluginResult=[CDVPluginResult resultWithStatus:CDVCommandStatus_OK 
    messageAsString:responseString];

   [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
  BarCodeScannerViewController *view=[[BarCodeScannerViewController alloc]init];

   navi=[[UINavigationController alloc] initWithRootViewController:view];
     }
但我无法移动并获取日志错误

           #import <Foundation/Foundation.h>
           #import <Cordova/CDV.h>

          @interface HelloWorldPlugin : CDVPlugin
          {
             UINavigationController *navi;
          }
          -(void)sayHello:(CDVInvokedUrlCommand*)command;
  2014-07-11 10:06:23.660 HelloWorld[548:60b] THREAD WARNING: 
    ['HelloWorldPlugin'] took
  '214928.292969' ms. Plugin should use a background thread.

  2014-07-11 10:06:23.666 HelloWorld[548:4207] void SendDelegateMessage(NSInvocation *):

    delegate (webView:decidePolicyForNavigationAction:request:frame:decisionListener:)
     failed
     to return after waiting 10 seconds. main run loop mode: kCFRunLoopDefaultMode

您上载的一个.zip文件(在评论中)不再可用,因此我无法自己测试它,但我的建议是使用Worklight 6.2中提供的发送操作功能来实现这一点

           #import <Foundation/Foundation.h>
           #import <Cordova/CDV.h>

          @interface HelloWorldPlugin : CDVPlugin
          {
             UINavigationController *navi;
          }
          -(void)sayHello:(CDVInvokedUrlCommand*)command;
通过这种方式,实现是非常干净和直接的。基本前提是:

           #import <Foundation/Foundation.h>
           #import <Cordova/CDV.h>

          @interface HelloWorldPlugin : CDVPlugin
          {
             UINavigationController *navi;
          }
          -(void)sayHello:(CDVInvokedUrlCommand*)command;
  • 从应用程序的JavaScript中,您将调用一个“操作”
  • 此操作基本上是显示视图控制器
  • 完成后,您将从自定义视图控制器返回Worklight提供的视图控制器(web应用…)
  • 您可以阅读有关发送操作的信息,也可以查看示例实现,如下所示:

               #import <Foundation/Foundation.h>
               #import <Cordova/CDV.h>
    
              @interface HelloWorldPlugin : CDVPlugin
              {
                 UINavigationController *navi;
              }
              -(void)sayHello:(CDVInvokedUrlCommand*)command;
    
    • (JS到native)
    • (JS原生)

    您是否正在尝试使用预先存在的Cordova条形码扫描仪?哪一个?感谢编辑IdanNo我用Apple framework创建了自己的代码。我创建的类包含按钮、插座、,textfields…当我单击按钮时,扫描开始。但是在HelloWorld插件中只有一个方法可以调用。我的问题是如何调用我自己的类,就像Cordova库调用同一HelloWorld插件类一样…提前感谢您的帮助。这无法通过对话进行调试。提供Worklight项目和完整的本机实现文件。上传到dropbox。