我正在为iOS开发Cordova插件。我的插件中有一种方法可以使用' plugin.js'我只从我的应用程序(javascript)调用一次,开始侦听来自本机部分的回调。调用此方法时,我将callbackId存储在Objective-C类中,并希望稍后发送回调(可能有多个回调),因此我使用存储的callbackId发送CDVPluginResult,并设置&#39 ; keepCallback'为真。但回调永远不会出现在' plugin.js'中,因此不在应用中。
Objective-C方法1(听众部分):
- (void)listenForNews:(CDVInvokedUrlCommand *)command
{
self.storedCallbackId = command.callbackId;
...
Objective-C方法2(这是异步调用多次的方法)
- (void)onNewsReceived
{
CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
[pluginResult setKeepCallbackAsBool:YES];
[self.commandDelegate sendPluginResult:pluginResult callbackId:self.storedCallbackId];
我已经验证过' storedCallbackId'正确存储和阅读。
有什么想法吗?
答案 0 :(得分:2)
我执行类似以下in my plugin的操作并且它有效,请尝试一下:
- (void)listenForNews:(CDVInvokedUrlCommand *)command
{
self.storedCallbackId = command.callbackId;
...
CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_NO_RESULT];
[pluginResult setKeepCallback:[NSNumber numberWithBool:YES]];
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
- (void)onNewsReceived
{
CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
[pluginResult setKeepCallback:[NSNumber numberWithBool:YES]];
[self.commandDelegate sendPluginResult:pluginResult callbackId:self.storedCallbackId];