消息有效负载包含无效的“ android”属性。有效属性是“数据”和“通知”

时间:2019-04-05 16:16:25

标签: firebase push-notification firebase-cloud-messaging google-cloud-functions

我正在尝试使用具有特定于平台的配置的Firebase Cloud Functions发送推送通知。我从https://firebase.google.com/docs/cloud-messaging/send-message

进行了配置
build error

但遇到var message = { 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: { channel_id: threadId, }, android: { ttl: 3600 * 1000, notification: { icon: 'stock_ticker_update', color: '#f45342', }, }, apns: { payload: { aps: { badge: 42, }, }, }, };

错误

admin.messaging().sendToDevice(deviceToken, message)

有什么想法吗?还是一些适用于iOS / Android平台的正确配置示例?

1 个答案:

答案 0 :(得分:2)

sendToDevice()是使用旧版FCM HTTP端点的功能。传统端点不提供特定于平台的字段。为了获得该功能,可以通过send()函数使用新端点。您可能需要更新您的Admin SDK版本。您可以在documentation here中看到一个示例。

例如,对于您提供的代码,您将发送如下消息:

let message = {
  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: {
    channel_id: threadId,
  },
  android: {
    ttl: 3600 * 1000,
    notification: {
      icon: 'stock_ticker_update',
      color: '#f45342',
    },
  },
  apns: {
    payload: {
      aps: {
        badge: 42,
      },
    },
  },
  token: deviceToken,
};

admin.messaging().send(message)
  .then((response) => {
    // Response is a message ID string.
    console.log('Successfully sent message:', response);
  })
  .catch((error) => {
    console.log('Error sending message:', error);
  });

请注意,设备令牌现在位于message对象中。