React-native FCM:当应用程序处于后台或被杀时,无法访问通知数据

时间:2017-10-21 12:16:40

标签: react-native push-notification firebase-cloud-messaging android-notifications react-native-fcm

我正在尝试使用firebase云消息传递和反应原生应用程序来使用react-native-fcm进行工作。

我主要关注Android

react-native@0.48.0
react-native-fcm@10.0.2
OS: Android - Emulator - 7.0.2

当我的应用程序处于前台时,它的工作正常,我会收到此功能中的数据

FCM.on(FCMEvent.Notification, async (notif) => {

我可以处理所有事情

image

但是当应用程序处于后台时,会收到通知,但是当我点击横幅时,应用程序进入前台,触发相同的功能,但notif对象不同,并且不包含我的数据

image

当应用程序被杀时,也会收到通知,但是当我点击横幅时,应用程序会启动,即 FCM.getInitialNotification() 触发,我的notif对象也包含数据,行为与背景相同

image

我正在使用firebase web界面的node-gcm库测试消息的格式,但没有任何效果。

这是我的消息示例,但我尝试了大量的组合:

let message = new gcm.Message({
    priority: 'high',
    content_available: true,
    timeToLive: 3,
    data: {
        key1: 'message1',
        key2: 'message2'
    },
    notification: {
        title: "Hello, World",
        icon: "ic_launcher",
        body: "This is a notification that will be displayed if your app is in the background."
    },
    custom_notification: {
        key1: 'message1',
        key2: 'message2'
    }

});

在这些情况下,我该如何继续发送和接收数据?因为让我发疯了。

如果您需要更多数据,请索取:)

谢谢!

1 个答案:

答案 0 :(得分:2)

就我而言,在前台通知事件firebase.notifications()。onNotification

上构建通知时,我缺少通知的数据设置

new firebase.notifications.Notification()
      .setNotificationId(fcmNotification.data.notificacionId)
      .setTitle(fcmNotification.title)
      .setBody(fcmNotification.body)
      .setData(fcmNotification.data) // <- this little bastard

因此,在data上点击通知firebase.notifications().onNotificationOpened时仍未定义,即使firebase.notifications().onNotification中的json填充了数据字段