gpt4 book ai didi

firebase-cloud-messaging - Firebase Messaging 偶尔因内部错误而失败

转载 作者:行者123 更新时间:2023-12-05 06:13:13 37 4
gpt4 key购买 nike

这周我在通过 Node.js 库(代码相同,库版本相同等)向我的 iOS 设备发送消息时遇到了很多内部错误

很难调试,因为有时它会起作用。当我使用 for 循环发送 10 条消息时,我的设备将收到 3-4 条消息。

FirebaseMessagingError: Internal error encountered.
> at FirebaseMessagingError.FirebaseError [as constructor] (/node_modules/firebase-admin/lib/utils/error.js:42:28)
> at FirebaseMessagingError.PrefixedFirebaseError [as constructor] (/node_modules/firebase-admin/lib/utils/error.js:88:28)
> at new FirebaseMessagingError (/node_modules/firebase-admin/lib/utils/error.js:254:16)
> at Function.FirebaseMessagingError.fromServerError (/node_modules/firebase-admin/lib/utils/error.js:287:16)
> at Object.createFirebaseError (/node_modules/firebase-admin/lib/messaging/messaging-errors.js:34:47)
> at FirebaseMessagingRequestHandler.buildSendResponse (/node_modules/firebase-admin/lib/messaging/messaging-api-request.js:119:47)
> at /node_modules/firebase-admin/lib/messaging/messaging-api-request.js:94:30
> at Array.map (<anonymous>)
> at /node_modules/firebase-admin/lib/messaging/messaging-api-request.js:93:30
> at processTicksAndRejections (internal/process/task_queues.js:97:5) {
> errorInfo: {
> code: 'messaging/internal-error',
> message: 'Internal error encountered.'
> },
> codePrefix: 'messaging'
> }

我尝试更改授权 key ,但仍然出现错误。

代码很简单

import * as admin from 'firebase-admin'
admin.initializeApp()
async function sendPushNotification(
tokens: string[],
title: string,
body: string
): Promise<admin.messaging.BatchResponse> {
console.log('sending %s to %d devices', body, tokens.length)
const message = {
notification: {
title: title,
body: body,
},
tokens: tokens,
apns: {
payload: {
aps: {
sound: 'default',
},
},
},
}
return admin.messaging().sendMulticast(message)
}

最佳答案

我一直遇到同样的问题:node.js firebase admin SDK 向 iOS 发送通知偶尔会因 500/ISE 而失败。

它似乎特定于 iOS,或者至少更常见于 iOS,因为在 Android 开发期间我从未遇到过这个问题。我联系了 Firebase 支持,他们是这样说的:

Internal Server Error are usually due to timeouts. Some minor hiccups can't be avoided that's why we recommend developers to implement exponential back-off retry mechanism. You can refer to this StackOverflow discussion for more information on retry-after and exponential back offs.

无论如何,在我这边建立一些重试支持似乎是个好主意。我以前没用过它,但我喜欢 npm 上 cockatiel 模块的外观。我打算继续使用在他们的自述文件开头给出的 retryWithBreaker 示例,只是将退避尝试和断路器设置得更高,可能分别为 5 和 20。

关于firebase-cloud-messaging - Firebase Messaging 偶尔因内部错误而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63382257/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com