Firebase cloud messaging Firebase消息传递偶尔会失败,并出现内部错误

Firebase cloud messaging Firebase消息传递偶尔会失败,并出现内部错误,firebase-cloud-messaging,Firebase Cloud Messaging,本周,我通过Node.js库向iOS设备发送消息时,收到了很多内部错误(代码相同,库版本相同等) 调试很困难,因为有时它可以工作。当我放置一个for循环来发送10条消息时,我的设备将得到3-4条消息 FirebaseMessagingError: Internal error encountered. > at FirebaseMessagingError.FirebaseError [as constructor] (/node_modules/firebase-admin/l

本周,我通过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'
>  } 
FirebaseMessagingError:遇到内部错误。
>在FirebaseMessagingError.FirebaseError[作为构造函数](/node_modules/firebase admin/lib/utils/error.js:42:28)
>在FirebaseMessagingError.prefixedFrebeAseError[作为构造函数](/node_modules/firebase admin/lib/utils/error.js:88:28)
>在新的FirebaseMessaginError(/node_modules/firebase admin/lib/utils/error.js:254:16)
>位于Function.FirebaseMessagingError.fromServerError(/node_modules/firebase admin/lib/utils/error.js:287:16)
>在Object.createFirebaseError(/node_modules/firebase admin/lib/messaging/messaging errors.js:34:47)
>在FirebaseMessagingRequestHandler.buildSendResponse(/node_modules/firebase admin/lib/messaging/messagingAPI request.js:119:47)
>at/node_modules/firebase admin/lib/messaging/messaging-api-request.js:94:30
>在Array.map()处
>at/node_modules/firebase admin/lib/messaging/messaging-api-request.js:93:30
>在处理和拒绝时(内部/process/task_queues.js:97:5){
>错误信息:{
>代码:“消息传递/内部错误”,
>消息:“遇到内部错误。”
>    },
>codePrefix:“消息传递”
>  } 
我尝试更改身份验证密钥,但仍然出现错误

代码非常简单

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)
}
import*作为“firebase管理员”中的管理员
admin.initializeApp()
异步函数sendPushNotification(
令牌:字符串[],
标题:字符串,
正文:字符串
):承诺{
console.log('将%s发送到%d个设备',正文,令牌。长度)
常量消息={
通知:{
标题:标题,,
身体:身体,,
},
代币:代币,
apns:{
有效载荷:{
aps:{
声音:'默认',
},
},
},
}
返回admin.messaging().sendMulticast(消息)
}

我也遇到了同样的问题:node.js firebase admin SDK向iOS发送通知时偶尔会出现500/ISE故障

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

内部服务器错误通常是由于超时造成的。一些小问题无法避免,这就是为什么我们建议开发人员实现指数退避重试机制。有关重试后和指数退避的更多信息,请参阅本手册


无论如何,在我这边建立一些重试支持似乎是个好主意。我以前没用过,但我喜欢npm上cockatiel模块的外观。我计划使用自述文件开始时给出的retryWithBreaker示例,只是将后退尝试和breaker设置得更高,可能分别为5和20。

同样的问题随机发生在我身上