没有调用Cordova插件回调(iOS)

时间:2017-01-25 20:16:47

标签: javascript ios objective-c cordova ionic-framework

我正在为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'正确存储和阅读。

有什么想法吗?

1 个答案:

答案 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];