firebase / firebase/firebase-admin-node
firebaseMessaging.sendEachForMulticast: app/network-error
- Langage dominant
- TypeScript
- Étoiles
- 1.7k
- Forks
- 419
- Merge moyen
- 3 j 10 h
- PR mergées (30 j)
- 16
Description
```
export async function pushNotification({
identifiers,
body,
metadata,
title,
link,
}: PushMessage) {
try {
logger.debug(`Push Notification: ${JSON.stringify(identifiers)}`);
const userPreIdentifiers = identifiers.users;
const teamPreIdentifiers = identifiers.teams;
const userIdentifiers: string[] = [];
if (userPreIdentifiers === "allUsers") {
const allUserIdentifiers = await getAllUsersIdentifiers();
userIdentifiers.push(...allUserIdentifiers);
} else {
const userTokens = await getUserIdentifiers({
userRefs: userPreIdentifiers || [],
});
userIdentifiers.push(...(userTokens || []));
}
const teamIdentifiers = await getTeamIdentifiers({
teamRefs: teamPreIdentifiers || [],
});
const tokens = [...(userIdentifiers || []), ...(teamIdentifiers || [])];
logger.debug("All tokens:", tokens);
if (tokens.length === 0) {
logger.debug("No tokens found for push notification");
return;
}
const message: MulticastMessage = {
tokens,
notification: {
title,
body,
},
data: metadata as { [key: string]: string },
...(link && {
webpush: {
fcmOptions: {
link,
},
},
}),
};
const response =
await firebaseConfig.firebaseMessaging.sendEachForMulticast(message);
logger.debug(
`Successfully sent push notification: ${JSON.stringify(response)}`
);
} catch (error) {
logger.error("Error sending push notification:", error);
}
}
```
```
{"responses":[{"success":false,"error":{"code":"app/network-error","message":"Error while making request: Stream closed with error code NGHTTP2_PROTOCOL_ERROR. Error code: ERR_HTTP2_STREAM_ERROR"}}],"successCount":0,"failureCount":1}
```
I am using the `"firebase-admin": "^13.0.2",` sdk. The `sendEachForMulticast` not working on my development mode (did not try yet in production). However, if I am using the `send` method it will successfully push the notification.
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par l’appel à firebaseMessaging.sendEachForMulticast montré dans l’issue et reproduisez l’app/network-error avec firebase-admin 13.0.2 en mode développement. Comparez son comportement avec celui de la méthode send fonctionnelle et examinez la réponse renvoyée. C’est terminé lorsque l’envoi multicast réussit sans l’erreur de protocole HTTP/2, ou lorsque l’échec est documenté avec une cause confirmée et une solution de contournement.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- node.js, typescript
- Domaine
- backend
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- Calme
- Clarté
- Plutôt claire
- Accessibilité débutants
- 50/100