解决方案:
问题似乎与Firebase测试控制台发送的消息有关,但我还不知道原因。我开始使用node-gcm发送消息,一切都从一开始就按预期工作。
两个消息都通过设备令牌发送到单个设备。 logcat中的消息:
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)
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造成的吗?
更新了缩短版本:
原始问题:
我正在使用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
答案 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 ...
中的问题希望这会对你有帮助!!!