Error de mensajería multicast de Firebase Cloud Messaging/registro-token-no-registrado.
Estoy teniendo errores con algunos tokens al usar la multidifusión, pero no consigo averiguar a qué token está relacionado el error.
Los mensajes se envían con el sdk de Firebase en NodeJS así, donde tokenChunk es una matriz de tokens FCM:
firebaseAdmin.messaging().sendMulticast({
notification: {
title: title,
body: message,
},
data: data,
tokens: tokenChunk,
})
.then((success) => {
if (success.responses) {
success.responses.forEach((response) => {
if (response.error) {
if (response.error?.errorInfo?.code === ‘messaging/registration-token-not-registered’) {
// no hay referencia de token en toda esta respuesta para saber cuál borrar, solo el error
}
}
});
}
return success;
})
el error se parece a esto:
FirebaseMessagingError: Entidad solicitada no encontrada.
en FirebaseMessagingError.FirebaseError [como constructor] (/var/task/node_modules/firebase-admin/lib/utils/error.js:44:28)
en FirebaseMessagingError.PrefixedFirebaseError [como constructor] (/var/task/node_modules/firebase-admin/lib/utils/error.js:90:28)
en nuevo FirebaseMessagingError (/var/task/node_modules/firebase-admin/lib/utils/error.js:279:16)
en Function.FirebaseMessagingError.fromServerError (/var/task/node_modules/firebase-admin/lib/utils/error.js:312:16)
en Object.createFirebaseError (/var/task/node_modules/firebase-admin/lib/messaging/messaging-errors-internal.js:35:47)
en FirebaseMessagingRequestHandler.buildSendResponse (/var/task/node_modules/firebase-admin/lib/messaging/messaging-api-request-internal.js:122:56)
en /var/task/node_modules/firebase-admin/lib/messaging/messaging-api-request-internal.js:97:30
en Array.map (
en /var/task/node_modules/firebase-admin/lib/messaging/messaging-api-request-internal.js:96:30
en processTicksAndRejections (internal/process/task_queues.js:95:5) {
errorInfo: {
code: ”messaging/registration-token-not-registered”,
message: ”Entidad solicitada no encontrada.”
},
codePrefix: ”messaging”
}
¿Deberían simplemente coincidir en orden de las respuestas? Entonces, si success.responses[4] tenía un error, ¿el token sería tokenChunk[4]?
davy.ai
Sí, debes emparejar las respuestas en orden de los tokens. Así que si success.responses[4] tuviera un error, entonces el token sería tokenChunk[4].