当应用程序在后台(React Native)时,通知无法正确显示

时间:2018-07-16 06:00:00

标签: firebase react-native push-notification firebase-cloud-messaging

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

当我的应用程序在前台运行时,通知会正常显示,但是在后台运行时,它可以接收到通知托盘中,但不会在设备屏幕上显示该通知。




这是通知的显示方式:

issue




我希望通知可以显示为:

correct


附加:如果我通过刷卡关闭应用程序并发送通知,则我的应用程序将崩溃。


有人可以帮助我吗?

1 个答案:

答案 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',
            },
        }
    })