You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过FirebaseMessaging的sendToDevice返回结果定位错误token索引

结论

是的,MessagingDevicesResponse返回的response.results数组索引和你传入的tokens数组索引严格一一对应,response.results[0]就是tokens[0]对应的推送结果,你示例中的处理逻辑完全符合官方设计规范。

补充说明
  • 该顺序映射是Firebase Admin SDK FCM接口的固定设计,不需要额外做顺序校验或映射匹配,直接按索引对应即可。
  • 你代码中根据索引删除无效token的逻辑是标准实践:如果results[i].error返回InvalidRegistration、NotRegistered等标识token无效的错误码,直接清理对应位置的tokens[i]即可。
  • 注意sendToDevice仅在全量请求失败(如鉴权错误、payload格式非法)时才会进入catch分支,部分token推送失败不会触发全局报错,所有单条推送的结果都需要在then的response.results中遍历处理。
代码示例
// 字符串数组,token1-3均为字符串格式的设备token
const tokens = [token1, token2, token3]; 

await admin
       .messaging()
       .sendToDevice(tokens, payload)
       .then((response) => { // response类型为MessagingDevicesResponse
         for (let i = 0; i < response.results.length; i++) {
           const res = response.results[i];
           if(res.error) {
              // 若索引i对应的推送结果出错,需删除对应的无效注册token
           }
         }
         return { success: true };
       })
       .catch((error) => {
         console.error(
           `推送通知出错,错误码:${error.code},错误信息:${error}`);
         return { error: error };
       });

内容的提问来源于stack exchange,提问作者Zenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 11:42:00