firebase / firebase/firebase-admin-node

firebaseMessaging.sendEachForMulticast: app/network-error

Ouverte
#2,821 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
api: messaging
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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.