Firebase FCM - Почему я получаю: ошибка полезной нагрузки, недопустимое свойство 'android' (или 'apns') - PullRequest
0 голосов
/ 26 марта 2019

Я использую облачные функции (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 Ответ

0 голосов
/ 29 марта 2019

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

Кроме того, я не уверен, что вы просто удалили некоторые элементы из своей полезной нагрузки, но там много ненужных запятых (,), которые нарушают 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
            }
        }

    }
}

Просто переключи переменные снова как нужно.

...