应用程序处于后台时PhoneGap推送插件获取数据?

时间:2017-01-05 22:12:44

标签: android cordova firebase ionic-framework firebase-notifications

解决方案:

问题似乎与Firebase测试控制台发送的消息有关,但我还不知道原因。我开始使用node-gcm发送消息,一切都从一开始就按预期工作。

两个消息都通过设备令牌发送到单个设备。 logcat中的消息:

  • 从Firebase测试控制台发送(不在bg中运行):

01-06 14:36:06.618 19422 19422 I chromium: [INFO:CONSOLE(95702)] "{"sound":"default","title":"├üFA fizet├ęs 2016.11.30-a","message":"K├Âvetkez┼Ĺ esed├ękes k├Âtelezetts├ęg: ├üFA fizet├ęs 2016.11.30-a","additionalData":{"id":"1","google.message_id":"0:1483709767111210%********","coldstart":false,"collapse_key":"********","foreground":true}}", source: file:///android_asset/www/build/main.js (95702)

  • 由node-gcm脚本发送(甚至从bg开始工作):

01-06 14:37:41.037 19422 19422 I chromium: [INFO:CONSOLE(95702)] "{"title":"├üFA fizet├ęs 2016.11.30-a","message":"K├Âvetkez┼Ĺ esed├ękes k├Âtelezetts├ęg: ├üFA fizet├ęs 2016.11.30-a","additionalData":{"id":"1","google.message_id":"0:1483709856368443%*********","coldstart":false,"collapse_key":"do_not_collapse","foreground":false}}", source: file:///android_asset/www/build/main.js (95702)

我看到的区别是collapse_key属性,它包含应用程序的apk名称和声音。这可能是由collapse_key造成的吗?

更新了缩短版本:

  • 设备注册成功。
  • 测试从Firebase测试控制台发送的通知。
  • 他们到达设备:
    • 当app位于前台时,会触发通知事件。行
    • 当应用在后台时,该消息会显示在操作系统的通知栏上。如果我点击它,我的应用程序将被激活,这就是全部。通知事件尚未以这种方式调用。不行。

原始问题:

我正在使用phonegap-push-plugin,当应用在后台并点击Android上的通知事件时,我无法触发通知事件。

如果应用程序处于活动状态,我可以看到该事件在logcat上调用。但是如果它在后台并且我点击事件通知,则应用程序会被激活,并且根据logcat事件没有其他任何事情发生。我尝试在Firebase测试控制台中添加content-available: 1作为附加参数,但这也没有帮助。

以下是应用程序处于活动状态时显示的logcat行:

01-05 22:41:59.981  9076  9186 V PushPlugin: extrasToJSON:
{"sound":"default","title":"Msg title","message":"Msg
body","additionalData":
{"id":"1","google.message_id":"0:1483652521531127%d86d9************",
"coldstart":false,"collapse_key":"************","foreground":true}}

代码与其他地方的代码相同,在回调被触发后我有立即的console.logs:

push.on('notification', (data) => {
    console.log('onNotification'); // not shown when app is in bg

3 个答案:

答案 0 :(得分:0)

推送插件在后台发送通知。 插件文档中定义了一个事件,该事件通过收到的通知触发,尝试捕获事件并使用Local Notification插件发送通知。

答案 1 :(得分:0)

前景标志可以帮助您保持状态。

push.on('notification', function(data) {
 console.log('onNotification');

if(data.additionalData.foreground) {      // if its true app is in foreground
   console.log('onNotificationForeground');
}else{                                    // else app is in background 
   console.log('onNotificationbackground');

   if ( data.additionalData.coldstart ){
          alert("coldstart");
   }
   else{
       alert("other than coldstart");
   }
  }
});

使用前景标记,您可以轻松地知道应用程序位于前面或后台。

答案 2 :(得分:0)

请使用以下方式更改属性以初始化通知插件

        var push = PushNotification.init({
            android: {
                senderID: "12345679",
                forceShow : true
            },
            browser: {
                pushServiceURL: 'http://push.api.phonegap.com/v1/push'
            },
            ios: {
                alert: "true",
                badge: "true",
                sound: "true"
            },
            windows: {}
        });

android.forceShow它控制app在前台时的通知行为。

如果true和应用程序位于前台,它将在通知抽屉中显示通知,与应用程序处于后台时的方式相同(并且仅在('notification')回调时才会调用用户单击通知)。当false和app位于前台时,将立即调用on ('notification')回调。

有关详细信息,请查看here ..

中的插件文档

另请参阅here ...

中的问题

希望这会对你有帮助!!!