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

如何在Django中获取Firebase Messaging(FCM-DJANGO)的错误响应详情

如何获取Firebase Admin批量推送的详细错误信息

你当前拿到的FirebaseResponseDict只包含整体推送的简略统计,要排查单用户收不到通知的问题,需要解析返回的BatchResponse对象,获取每条设备的具体发送结果。

实现步骤及代码示例

  1. 捕获send_message的返回值,该返回值即为BatchResponse对象,包含每一条推送的详细结果。
  2. 遍历BatchResponse.responses属性,它是与传入的设备token一一对应的结果列表。
  3. 检查每个结果的success状态,失败时通过exception属性获取错误码和描述。

完整代码如下:

from firebase_admin import messaging

# 发送消息并获取完整响应
response = devices.send_message(
    Message(
        webpush=WebpushConfig(
            notification=WebpushNotification(
                title=noticia.titulo,
                body=noticia.resumo,
                image=noticia.capa.url,
                icon=icone
            ),
            fcm_options=WebpushFCMOptions(
                link=f'https://site/{id}'
            )
        )
    )
)

# 遍历每条设备的推送结果
for idx, result in enumerate(response.responses):
    # 对应当前结果的设备token
    registration_id = devices.tokens[idx]
    if result.success:
        print(f"通知成功发送到: {registration_id}")
    else:
        # 获取错误详情
        error = result.exception
        error_code = error.code
        error_msg = error.message
        print(f"推送失败到 {registration_id}: {error_code} - {error_msg}")
        
        # 根据错误码处理异常场景(示例)
        if error_code in ['messaging/invalid-registration-token', 'messaging/registration-token-not-registered']:
            # 这里可添加逻辑:从数据库移除无效/已注销的token
            pass
        elif error_code in ['messaging/unavailable', 'messaging/internal-error']:
            # 这里可添加重试逻辑
            pass

常见错误码及对应问题

  • messaging/invalid-registration-token: 设备token格式无效,可能是前端传递时出现错误
  • messaging/registration-token-not-registered: token已被Firebase注销,通常是用户卸载应用或清除了应用数据
  • messaging/unavailable: Firebase服务暂时不可用,建议稍后重试
  • messaging/quota-exceeded: 推送配额超出,需要检查Firebase控制台的配额限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:31:05