Javascript IBM Worklight:创建插件时调用IOS Nativecode
我正在尝试将iOS本机代码集成到我的Worklight应用程序中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; }
#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;
#import <Foundation/Foundation.h>
#import <Cordova/CDV.h>
@interface HelloWorldPlugin : CDVPlugin
{
UINavigationController *navi;
}
-(void)sayHello:(CDVInvokedUrlCommand*)command;
- (JS到native)
- (JS原生)