Firebase Cloud Messaging未发送数据有效负载

时间:2017-07-26 02:57:55

标签: android firebase firebase-cloud-messaging

来自Defining message payload上的Firebase云消息传递文档:

  

您可以通过创建对象来指定一种或两种消息类型    数据 和/或 通知 键。

文档给出了组合消息的示例:

var payload = {
  notification: {
    title: "$GOOG up 1.43% on the day",
    body: "$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day."
  },
  data: {
    stock: "GOOG",
    open: 829.62,
    close: "635.67"
  }
};

同样来自Handle notification messages in a backgrounded app的文档:

  

这包括同时包含通知和数据有效负载的消息   (以及从Notifications控制台发送的所有消息)。在这些   例如,通知将传递到设备的系统托盘,并且   数据有效负载是在您的 extras of intent 中提供的   发射器活动。

我正在通过此有效负载发送通知:

const payload = {
    notification: {
        title: '...',
        body: '...',
    },
    data: {
        test: "test"
    },
};
admin.messaging().sendToDevice(tokens, payload).then(...)

extras始终为空:

Intent intent = getIntent();
if (intent != null) {
    Bundle extras = intent.getExtras();
    if (extras != null) {
        // do something
    }
}

我做错了什么?

1 个答案:

答案 0 :(得分:1)

接收包含通知和数据有效负载的邮件时的应用行为取决于应用是在后台还是在前台 - 本质上是否在收到时是否处于活动状态。< / p>

  • 在后台,应用会在通知托盘中收到通知有效负载,并仅在用户点击通知时处理数据有效负载。

  • 在前台时,您的应用会收到一个消息对象,其中包含两个有效负载。

所以,基本上如果应用程序在前台,意图就不会有任何通知附加功能。如果不是这样你在配置上做错了什么。