我有一个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));
}
});