ErrorCode

FCM 失败条件的错误代码。

错误代码 说明和解决步骤
UNSPECIFIED_ERROR没有关于此错误的更多信息。 无。
INVALID_ARGUMENT(HTTP 错误代码 = 400)请求参数无效。系统会返回 google.rpc.BadRequest 类型的扩展,以指定哪个字段无效。 可能的原因包括注册无效、软件包名称无效、消息过大、数据键无效、TTL 无效或其他无效参数。
注册无效:请检查您传递给服务器的注册令牌格式。请确保它与客户端应用在注册 FCM 时获得的注册令牌相符。不要截断令牌或添加其他字符。
软件包名称无效:请确保消息发送至软件包名称与请求中传递的值相匹配的注册令牌。
消息过大:确保消息中包含的载荷数据的总大小不超过 FCM 的限制:大多数消息的上限均为 4096 字节;如果是主题消息,则上限为 2048 字节。这包括键和值。
数据键无效:确保载荷数据不包含 FCM 在内部使用的键(例如 from、gcm,或任何以 google 为前缀的值)。请注意,某些字词(例如 fold_key)也可供 FCM 使用,但允许包含在载荷中,在这种情况下,载荷值将被 FCM 值替换。
TTL 无效:检查 ttl 中使用的值是否为表示时长(以秒为单位)的整数值,且介于 0 到 2,419,200(即 4 周)之间。
参数无效:检查提供的参数的名称和类型是否正确。
UNREGISTERED(HTTP 错误代码 = 404)已从 FCM 取消注册应用实例。这通常意味着使用的令牌不再有效,必须使用新令牌。 出现此错误的原因可能是缺少注册令牌,或令牌未注册。
缺少注册:如果消息的目标是 token 值,请检查请求中是否包含注册令牌。
未注册:在很多情况下,现有注册令牌可能会失效,包括:
- 如果客户端应用取消注册 FCM。
- 如果客户端应用自动取消注册(当用户卸载应用时,就可能会发生这种情况)。例如,在 iOS 上,APNs 反馈服务报告称 APNs 令牌无效。
- 如果注册令牌过期(例如 Google 可能决定更新注册令牌,或 iOS 设备的 APNs 令牌已过期)。
- 如果客户端应用已更新,但新版本未配置为接收消息。
对于所有这些情况,请从应用服务器中移除此注册令牌,并停止用其发送消息。
SENDER_ID_MISMATCH(HTTP 错误代码 = 403)经过身份验证的发送者 ID 与注册令牌的发送者 ID 不同。 一个注册令牌与一组特定的发送者关联。当客户端应用注册 FCM 时,必须指定允许哪些发送者发送消息。在向客户端应用发送消息时,您应使用这些发送者 ID 之一。如果您切换为其他发送者,则现有的注册令牌将不起作用。
QUOTA_EXCEEDED(HTTP 错误代码 = 429)消息目标超出了发送限制。系统会返回 google.rpc.QuotaFailure 类型的扩展,以指定超出了哪个配额。 此错误可能是由超出消息率配额、超出设备消息率配额或超出主题消息率配额导致的。
超出消息速率:消息的发送速率过高。您必须降低发送消息的总体速率。使用指数退避算法(初始延迟至少为 1 分钟)重试被拒邮件。
超出设备消息率:向特定设备发送消息的频率过高。请参阅单台设备的消息速率限制。请减少发送到此设备的消息数,并使用指数退避算法重新尝试发送。
超出主题消息率:发送给特定主题的订阅者的消息率过高。请减少向此主题发送的消息数量,并使用指数退避算法(初始延迟至少为 1 分钟)重新尝试发送。
UNAVAILABLE(HTTP 错误代码 = 503)服务器过载。 服务器无法及时处理请求。重试同一请求,但必须:
- 如果 FCM 连接服务器发出的响应中包含 Retry-After 标头,则应在该标头指明的间隔后重试。
- 在您的重试机制中实现指数退避。(例如,如果等待一秒钟后进行第一次重试,则至少要等待两秒钟再进行下一次重试,然后等待 4 秒钟,依此类推)。如果您要发送多封邮件,请考虑应用抖动。如需了解详情,请参阅处理重试。导致出现问题的发送者有可能会被列入拒绝名单。
INTERNAL(HTTP 错误代码 = 500)发生未知内部错误。 服务器在尝试处理请求时遇到错误。您可按照处理重试中的建议重试同一请求。如果错误仍然存在,请与 Firebase 支持团队联系。
THIRD_PARTY_AUTH_ERROR(HTTP 错误代码 = 401)APN 证书或 Web 推送身份验证密钥无效或缺失。 无法发送针对 iOS 设备或 Web 推送注册的消息。请检查您的开发和生产环境凭据是否有效。