#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?