#node.js #firebase #push-notification #firebase-cloud-messaging
#node.js #firebase #push-уведомление #firebase-облако-обмен сообщениями
Вопрос:
Я работаю с отправкой push-уведомлений в мои приложения react native через firebase cloud messaging. Я получаю push-токен с устройства и сохраняю его в своей базе данных.
При вызове push-уведомления из серверной части (nodejs) оно срабатывает несколько раз, и я вижу push-уведомление на своем телефоне. Примерно через два раза после отправки уведомления внезапно он начинает давать мне сбой
Список токенов, вызвавших сбои: {«ответы»: [{«успех»: false, «ошибка»: {«код»:»сообщение / недопустимый аргумент», «сообщение»:»Запрос содержит недопустимый аргумент».}}],»successCount»: 0, «failureCount»: 1}
Затем я получаю другое сообщение на следующем, которое является дальнейшим сообщением:
Список токенов, вызвавших сбои: {«responses»:[{«success»:false,»error»:{«code»:»messaging/registration-token-not-registered»,»message»:» Запрошенный объект не найден.»}}],»successCount»: 0, «failureCount»: 1}
Это мой код для отправки push-уведомлений на nodejs:
const message = {
tokens: registrationTokens,
notification: {
"title": "TEST",
"body": "TEST body"
},
data: {
"action": "New_Card",
"unique_id": 1
}
}
fbMsging.sendMulticast(message)
.then((response) => {
if (response.failureCount > 0) {
const failedTokens = [];
response.responses.forEach((resp, idx) => {
if (!resp.success) {
failedTokens.push(registrationTokens[idx]);
}
});
console.log('List of tokens that caused failures: ' JSON.stringify(response));
console.log('List of tokens that caused failures: ' failedTokens);
callback(false);
} else {
console.log(response.successCount ' messages were sent successfully');
callback(true);
}
});
Пожалуйста, сообщите.
Комментарии:
1. У вас есть два разных сообщения об ошибках, и они могут не быть связаны друг с другом. Первая ошибка предполагает, что вы передали что-то недопустимое в API, но мы не можем видеть, что это такое, поскольку все скрыто за переменными. Я предлагаю разбить это на что-то более дискретное с жестко закодированными значениями, которые легко видны.
2. Я обновил его с четкими значениями, но да, я вызываю одну и ту же функцию 2 раза, и она работает, затем третий раз выдает недопустимый аргумент, а четвертый раз просто говорит, что не зарегистрирован