Я перехожу с устаревшего HTTP на v1 с помощью модуля NPM firebase-admin. Но у меня проблема в том, что при отправке уведомления он не выдает никаких ошибок, но он не возвращает идентификатор сообщения, и уведомление не получено на устройстве.
Код сервера:
const admin = require('firebase-admin');
var serviceAccount = require('./file.json');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
const messaging = admin.messaging();
async function sendPush() {
const message2 = {
notification: {
title: 'test title',
body: 'test'
},
token: 'valid-token'
};
try {
const test = await messaging.send(message2);
console.info('--------------------------Successfully sent message:--------------------------');
console.info(test);
console.info('------------------------------------------------------------------------------');
} catch(err) {
// Will catch both thrown exceptions as well as rejections
console.info('--------------------------Error sending message:', err);
}
}
Когда я отправляю уведомление с помощью функции sendPush, я получаю в консоли следующий ответ:
--------------------------Successfully sent message:--------------------------
projects/project-name/messages/
------------------------------------------------------------------------------
Он не содержит идентификатор сообщения, указанный в документации, и я не получаю уведомление.
Образец ответа Документов:
projects/myproject-b5ae1/messages/0:1500415314455276%31bd1c9631bd1c96
Редактировать:
Я протестировал функцию sendToDevice (Legacy API) из firebase-admin, и она работает.
messaging.sendToDevice('valid-token', message)
.then(response => {
console.info('--------------------------Successfully sent message:--------------------------');
console.info(response);
console.info('------------------------------------------------------------------------------');
})
.catch(err => {
console.info('--------------------------Error sending message:', err);
});
Толчок доставлен. Но send, sendMulticast и sendAll (v1 API) по-прежнему не работают.





Решено.
Проблема заключалась в том, что токен, исходящий от Android, не подходил для новых версий FCM. После обновления генерации токенов в приложениях он начал работать как с устаревшими версиями, так и с v1.