boo*_*oom 5 phonegap-plugins cordova cordova-3
我需要实现一些在一个时间间隔内触发操作的功能,并将结果发送回javascript.
为简化起见,我将使用PhoneGap文档中的echo示例:
- (void)echo:(CDVInvokedUrlCommand*)command
{
[self.commandDelegate runInBackground:^{
CDVPluginResult* pluginResult = nil;
NSString* echo = [command.arguments objectAtIndex:0];
if (echo != nil && [echo length] > 0) {
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:echo];
} else {
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR];
}
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}];
}
Run Code Online (Sandbox Code Playgroud)
我想让这个调用与echo一样回调,直到stop被调用.
我创建了一个每秒调用另一个函数的计时器,但我不知道如何保持回调的上下文以将结果发送到.
//Starts Timer
- (void)start:(CDVInvokedUrlCommand*)command
{
[NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(action:)
userInfo:nil
repeats:YES];
}
//Called Action
-(void)action:(CDVInvokedUrlCommand*)command
{
[self.commandDelegate runInBackground:^{
NSLog(@"TRIGGERED");
}];
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将其保持在回调的上下文中都会很棒.谢谢!
小智 10
你会想要有类似的东西:
NSString *myCallbackId;
Run Code Online (Sandbox Code Playgroud)
作为实例级变量(在任何方法之外,因此它保留其值).首次进入插件代码时设置它:
myCallbackId = command.callbackId;
Run Code Online (Sandbox Code Playgroud)
然后,在实例化PluginResult之后,但在使用之前,执行以下操作:
[pluginResult setKeepCallback:[NSNumber numberWithBool:YES]];
Run Code Online (Sandbox Code Playgroud)
这将告诉它保持回调有效以备将来使用.
然后做一些事情:
[self.commandDelegate sendPluginResult:pluginResult callbackId:myCallbackId];
Run Code Online (Sandbox Code Playgroud)
你好,为了获得很多对 js 的回调,你可以使用setKeepCallback(true)
例如
PluginResult p3= new PluginResult(PluginResult.Status.OK, "0");
p3.setKeepCallback(true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7059 次 |
| 最近记录: |