我需要实现一些在一定时间间隔内触发操作并将结果发送回 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];
}];
}
我想让这个调用与每秒的回显相同,直到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");
}];
}
任何将其保留在回调上下文中的帮助都会很棒。谢谢!
你会想要这样的东西:
NSString *myCallbackId;
作为实例级变量(在任何方法之外,因此它保留其值)。第一次进入插件代码时设置:
myCallbackId = command.callbackId;
然后,在实例化 PluginResult 之后、使用它之前,执行以下操作:
[pluginResult setKeepCallback:[NSNumber numberWithBool:YES]];
这将告诉它保持回调有效以供将来使用。
然后做类似的事情:
[self.commandDelegate sendPluginResult:pluginResult callbackId:myCallbackId];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)