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

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


Я не могу сказать, какую версию вы используете, основываясь на вашем сообщении, но приятно отметить, что функция переопределения платформы доступна только для 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
            }
        }

    }
}

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

person AL.    schedule 29.03.2019
comment
Только что использованная копия примерно JSON .. Messaging payload contains an invalid "android" property. Valid properties are "data" and "notification - person Rajamohan S; 08.05.2019
comment
Переопределения платформы @Rajamohan доступны только для v1. Я думаю, вы используете наследие. - person AL.; 08.05.2019
comment
@AL. Не могли бы вы рассказать, как я могу использовать V1? - person Arjun; 18.05.2021