6

コルドバ 3.5 で構成されたプッシュ プラグインhttps://github.com/phonegap-build/PushPlugin.gitがあります。アプリがフォアグラウンドにある場合、通知プラグインのコールバックが呼び出され、すべてが期待どおりに機能します。

アプリが(バックグラウンドで)非アクティブの場合、通知が受信され、通知バーに表示されますが、コールバック関数は呼び出されません。私のコードは、プッシュ プラグインの例に基づいています。以下は、問題を再現するために簡略化された私のコードです。

 initialize : function () {
    console.info('NOTIFY  Ready to register for push notification.');
    var pushNotification = window.plugins.pushNotification;
    // Register device with push server
    pushNotification.register(gcmSuccessHandler, gcmErrorHandler, {
          'senderID': GCM_SENDER_ID,
          'ecb': 'onNotificationGCM'
     });

 }

window.onNotificationGCM = function(notification){ 
    //the beep is invoked 3 times only when the app is in foreground
navigator.notification.beep(3);
    console.log('EVENT -> RECEIVED:' + notification.event + '');

}

私はこの問題について 1 日以上頭を悩ませてきました。どんな助けでも大歓迎です。

更新: ようやく問題が何であるかがわかりました。dalvik キャッシュをクリアして、電話を再起動する必要がありました。これまでに2回私に起こりました。Android の既知の問題のようですhttps://github.com/phonegap-build/PushPlugin/issues/35

4

5 に答える 5

13

Cordova 3.5.0 と PushPlugin 2.2.0 でも同様の問題がありました。アプリがフォアグラウンドにあるときは通知が機能しましたが、バックグラウンドにあるときや実行されていないときは機能しませんでした。PushPlugin のソース コード (ファイル src/com/plugin/gcm/GCMIntentService.java) を読んで解決策を見つけました。通知のペイロードには「メッセージ」キーと「msgcnt」キーが含まれている必要があります。

于 2014-07-28T19:32:43.683 に答える
0

私にとって、アプリがフォアグラウンドにあったときでさえ、 onNotification 関数も呼び出されませんでした。

インターネットで読んで、送信者 ID が 100% 正しいことを確認しました。これは、登録機能が間違っていても成功を返すためです。

Dalvikキャッシュをクリアすることを提案しましたが、これにはルート化されたデバイスまたはリカバリツールがインストールされている必要があるようです(私のGalaxy Nexusテストデバイスにはデフォルトではありません)。それでも、これにより、現在のキャッシュを使用しないことを期待して、アプリケーションの名前を変更しようとしました。これはうまくいきました。

問題を解決するための私の手順:

  • ファイル内のウィジェットid値を変更しますconfig.xml
  • アプリの設定で電話からアプリケーションを削除します
  • 私の場合、Phonegap ビルド サービスからアプリを削除し、新しいアプリを作成しました (これが必要かどうかはわかりません)。
  • アプリケーションを再構築してデプロイする

起動して実行すると、onNotification 機能が動作し始めました! :)

アップデート

同じことが再び起こり始めました。完全なワイプが必要になるため、デバイスのルート化を防止しようとしましたが、同じ修正が 2 回目には機能しませんでした。

デバイスをルート化して回復ツールをインストールした後、Dalvik キャッシュをワイプするとうまくいきました...

于 2014-08-30T09:19:57.213 に答える
0

「ecb」のドキュメントを調べるとhttps://github.com/phonegap-build/PushPlugin#ecb-amazon-fire-os-android-and-ios

Your app may receive a notification while it is active (INLINE). 
If you background the app by hitting the Home button on your device, you may later receive a status bar notification. 
Selecting that notification from the status will bring your app to the front and allow you to process the notification (BACKGROUND).

したがって、バックグラウンド モードでは、「onNotificationGCM」メソッドは以下のシナリオでのみ呼び出されます。

  1. 通知がアラート ビューに表示され、ユーザーが [表示] オプションを選択する場合 [iOS プラットフォームの場合]
  2. デバイス通知トレイからのユーザー選択通知 [iOS および android の場合]
于 2014-06-28T09:04:14.597 に答える