【问题标题】:PhoneGap push plugin get data when app is in background?当应用程序在后台时,PhoneGap 推送插件获取数据?
【发布时间】:2017-01-05 22:12:44
【问题描述】:

解决方案:

问题似乎出在 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 测试控制台发送的测试通知。
  • 它们到达设备:
    • 当应用程序在前台时,通知事件会被触发。好的
    • 当应用程序在后台时,消息会出现在操作系统的通知栏上。如果我点击它,我的应用程序就会被激活,仅此而已。通知事件尚未以这种方式调用。不行

原问题:

我正在使用 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

【问题讨论】:

  • @SantoshShinde 在包括 devgirls 之前,我已经学习了许多教程,我可以注册、发送和捕获消息。唯一的问题是,当应用在后台时,点击通知时不会触发回调。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

            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 its 控制应用在前台时通知的行为。

    如果true 和应用在前台,它会在通知抽屉中显示一个通知,就像应用在后台时一样(只有当用户点击通知时才会调用 on('notification') 回调)。当false 和app 在前台时,on('notification') 回调会立即被调用。

    有关更多详细信息,请查看来自here.. 的插件文档。

    另外请查看here的问题...

    希望对你有帮助!!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 2014-05-18
      • 2014-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多