gpt4 book ai didi

cordova - 在PhoneGap插件中保留回调上下文?

转载 作者:行者123 更新时间:2023-12-04 16:38:45 24 4
gpt4 key购买 nike

我需要实现一些功能,该功能可触发间隔上的操作并将结果发送回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];

关于cordova - 在PhoneGap插件中保留回调上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18758756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com