我有一个使用Firebase推送远程通知的应用程序,一个客户端发送如下通知消息:
body: JSON.stringify({
'to' : 'token',
'notification' : {
'title' : ' ' + this.currentUser.email + ' send you a message !',
'body' : text
},
'data': {
'senderName' : this.currentUser.email,
'senderUid': this.currentUser.uid
}
})
和一个客户端实现接收通知的方法:
firebase.notifications().onNotification((notification) => {
const showNotification = new firebase.notifications.Notification()
.setNotificationId('notificationId')
.setTitle(notification.title)
.setBody(notification.data.text)
.android.setChannelId('channel_id_foreground')
.android.setSmallIcon('ic_launcher');
firebase.notifications().displayNotification(showNotification)
});
当我的应用程序在前台运行时,通知会正常显示,但是在后台运行时,它可以接收到通知托盘中,但不会在设备屏幕上显示该通知。
这是通知的显示方式:
我希望通知可以显示为:
附加:如果我通过刷卡关闭应用程序并发送通知,则我的应用程序将崩溃。
有人可以帮助我吗?
答案 0 :(得分:2)
如RN Firebase docs中所述,当您的应用程序在后台或关闭时,通知是由操作系统处理和显示的,因此您的onNotification()方法不会被调用,因此通知通道也不会被设置。根据{{3}},没有频道的通知将不会出现。
这对我有用:如果您希望通知在Android中以抬头通知的形式显示,请修改您的消息正文以包括您的频道ID,如下所示:
body: JSON.stringify({
'to' : 'token',
'notification' : {
'title' : ' ' + this.currentUser.email + ' send you a message !',
'body' : text
},
'data': {
'senderName' : this.currentUser.email,
'senderUid': this.currentUser.uid
},
'android': {
'priority': 'high',
'notification': {
'channel_id': 'channel_id_foreground',
},
}
})