this.fcm.onNotification().subscribe() 未在 Android 设备上调用



我有一个Ionic 4应用程序,我已经与Firebase集成了它,用于身份验证等。我想实现 Firebase 的云消息传递,这样我就可以将消息推送到我在 Android 和 iOS 上的应用。我在iOS上很容易做到这一点,我已经通过邮递员发送了一条消息,该消息显示在我的iPhone上,我看到了我发送的消息的JSON。当我在安卓上尝试时,它不起作用。两个设备都接收消息,但处理它的方式非常不同。

我在很多地方读到您需要将click_action设置为FCM_PLUGIN_ACTIVITY但是当我这样做时,该应用程序甚至无法在Android上打开。当我将其取出时,当您单击消息时,应用程序会加载,但它不会像我的警报中的iOS那样显示消息的正文。

import { FCM } from '@ionic-native/fcm/ngx';
...
constructor(public platform: Platform, public fcm: FCM)
...
this.platform.ready().then(() => {
this.fcm.onNotification().subscribe(data => {
alert(JSON.stringify(data));
});
this.fcm.onTokenRefresh().subscribe(token => {
// Register your new token in your back-end if you want
// backend.registerToken(token);
});
}).catch((error) => {
this.showFailureMessage(error.message);
});

这就是我要发布的内容...https://fcm.googleapis.com/fcm/send

{
"notification":{
"title":"My Title", 
"body":"My Body", 
"sound":"default", 
"click_action":"FCM_PLUGIN_ACTIVITY"
"icon":"fcm_push_icon",
},
"data":{
"type":"Something", 
},
"to":"/topics/all",
"priority":"high",
"restricted_package_name":""
}

任何帮助将不胜感激。

您似乎缺少订阅中的data.wasTapped部分。在这里,试试这个:

this.fcm.onNotification().subscribe(data => {
if (data.wasTapped) {
alert('Received in background');
alert(JSON.stringify(data));
} else {
alert('Received in foreground');
alert(JSON.stringify(data));
}
});

相关内容

  • 没有找到相关文章

最新更新