Firebase FCM — Почему я получаю: ошибка полезной нагрузки, недопустимое свойство ‘android’ (или ‘apns’)

#node.js #push-notification #apple-push-notifications #firebase-cloud-messaging #android-push-notification

#node.js #push-уведомление #apple-push-уведомления #firebase-cloud-messaging #android-push-уведомление

Вопрос:

Я использую облачные функции (node.js ) для отправки уведомлений на устройства. Моя полезная нагрузка настроена следующим образом:

 const payload = {
    notification: {
        title: payloadSender,
        body: payloadMessage,
    },
    data: {
        chatId: chatId,
    },
    android: {
        priority: 'normal',
        collapse_key: chatId,
        //todo how to set badge?
        notification: {
          sound: 'messageSent.wav',  
        },
    },
    apns: {
        headers: {
            'apns-priority': '5',
            'apns-collapse-id': chatId,
        },
        payload: {
            aps: {
                badge: newUnreads,
                sound: 'messageSent.wav',
                'content-available': 1,
            }
        }

    }
};
  

Согласно документам Firebase, вы можете использовать поля «android» и «apns» для поведения конкретного устройства. Ниже приведено представление JSON, найденное здесь, для сообщения, отправленного FCM:

 {
 "name": string,
 "data": {
   string: string,
   ...
},
"notification": {
  object(Notification)
},
"android": {
  object(AndroidConfig)
},
"webpush": {
  object(WebpushConfig)
},
"apns": {
  object(ApnsConfig)
},

// Union field target can be only one of the following:
"token": string,
"topic": string,
"condition": string
// End of list of possible types for union field target.
}
  

Почему я получаю ошибку Messaging payload contains an invalid "android" property. Valid properties are "data" and "notification". И Messaging payload contains an invalid "apns" property. Valid properties are "data" and "notification". ?

Комментарии:

1. вы нашли решение? У меня те же трудности.

Ответ №1:

Я не могу сказать, какую версию вы используете, основываясь на вашем сообщении, но приятно отметить, что функция переопределения платформы доступна только для версии v1 и не является устаревшей.

Кроме того, я не уверен, что вы просто удалили некоторые элементы из вашего примера полезной нагрузки, но там много ненужных запятых ( , ), которые нарушают JSON. Попробуйте использовать онлайн-форматировщик JSON для двойной проверки вашей полезной нагрузки. Я попробовал один на вашем и в итоге получил это после удаления всех ошибок:

 {
    "notification": {
        "title": "payloadSender",
        "body": "payloadMessage"
    },
    "data": {
        "chatId": "chatId"
    },
    "android": {
        "priority": "normal",
        "collapse_key": "chatId",
        //todo how to set badge? IIRC, Badges can be enabled via method inside the Android Notification builder
        "notification": {
          "sound": "messageSent.wav"
        }
    },
    "apns": {
        "headers": {
            "apns-priority": "5",
            "apns-collapse-id": "chatId"
        },
        "payload": {
            "aps": {
                "badge": "newUnreads",
                "sound": "messageSent.wav",
                "content-available": 1 // Double check this one if you are to actually use content-available or content_available for FCM
            }
        }

    }
}
  

Просто снова переключите переменные по мере необходимости.

Комментарии:

1. Просто использовал копию about JSON.. Messaging payload contains an invalid "android" property. Valid properties are "data" and "notification

2. Переопределения платформы @ Rajamohan доступны только для версии v1. Я думаю, вы используете устаревшее.

3. @AL. Не могли бы вы, пожалуйста, рассказать, как я могу использовать V1?