2017-01-25 21 views
0

iOS用のCordovaプラグインを開発中です。私の 'plugin.js'にはメソッドがあります。私のアプリケーション(javascript)から一度だけ呼び出すと、ネイティブの部分からコールバックを聞き始めます。このメソッドを呼び出すとき、Objective-CクラスにcallbackIdを格納しておき、後でコールバックを送信したい(複数のコールバックが可能です)ので、保存されたcallbackIdを使ってCDVPluginResultを送信し、 'keepCallback'をtrueに設定します。しかしコールバックは決して 'plugin.js'には到着しません。そのため、アプリにはありません。Cordovaプラグインコールバックが呼び出されていない(iOS)

Objective-Cの方法1(すなわちリスナー部分です):

- (void)listenForNews:(CDVInvokedUrlCommand *)command 
{ 
    self.storedCallbackId = command.callbackId; 
    ... 

Objective-Cの方法2(すなわち、非同期複数回呼び出されているメソッド'S)

- (void)onNewsReceived 
{ 
    CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; 
    [pluginResult setKeepCallbackAsBool:YES]; 
    [self.commandDelegate sendPluginResult:pluginResult callbackId:self.storedCallbackId]; 

Iがき'storedCallbackId'が適切に格納されて読み込まれていることを既に確認しました。

アイデア?

答えて

1

私は次の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]; 
+0

おかげで@DaveAlden。私たちは問題を解決することができました。最後に、プラグインクラスのインスタンスが複数あるため、Cordovaにコールバックが失われてしまいました(もちろん)。 – Dani

関連する問題