firebase / firebase/firebase-admin-node

firebaseMessaging.sendEachForMulticast: app/network-error

未关闭
#2,821 3 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
api: messaging
主要语言
TypeScript
星标
1.7k
派生
419
平均合并
3 天 10 小时
30 天内合并 PR
16

描述

```
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.

贡献指南

打开贡献指南

调研方向

从 issue 中所示的 firebaseMessaging.sendEachForMulticast 调用开始,在 development 模式下使用 firebase-admin 13.0.2 复现 app/network-error。将其行为与正常工作的 send 方法进行比较,并检查返回的响应。完成的标准是 multicast 发送成功且没有 HTTP/2 协议错误,或者已记录该失败并确认其原因及 workaround。

由索引模型根据 Issue 内容生成。

评估

技术栈
node.js, typescript
领域
backend
Issue 类型
缺陷
难度
3/5
预计耗时
1-2 天
活跃度
冷清
描述清晰度
基本清楚
新手友好度
50/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。