ErrorCode

FCM 故障情况的错误代码。

错误代码描述和解决步骤
UNSPECIFIED_ERROR没有关于此错误的更多信息。没有任何。
INVALID_ARGUMENT (HTTP 错误代码 = 400)请求参数无效。返回google.rpc.BadRequest类型的扩展以指定哪个字段无效。可能的原因包括无效注册、无效包名称、消息太大、无效数据密钥、无效 TTL 或其他无效参数。
无效注册:检查您传递给服务器的注册令牌的格式。确保它与客户端应用程序通过 FCM 注册收到的注册令牌匹配。不要截断标记或添加其他字符。
包名称无效:确保消息发送至注册令牌,其包名称与请求中传递的值匹配。
消息太大:检查消息中包含的有效负载数据的总大小是否超过 FCM 限制:大多数消息为 4096 字节,对于主题消息为 2048 字节。这包括键和值。
数据密钥无效:检查负载数据是否不包含 FCM 内部使用的密钥(例如 from、gcm 或任何以 google 为前缀的值)。请注意,FCM 也使用某些单词(例如collapse_key),但在有效负载中允许使用,在这种情况下,有效负载值将被 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) 服务器过载。服务器无法及时处理请求。重试相同的请求,但您必须:
- 如果 Retry-After 标头包含在 FCM 连接服务器的响应中,则遵守该标头。
- 在重试机制中实施指数退避。 (例如,如果您在第一次重试之前等待一秒,则在下一次重试之前至少等待两秒,然后等待 4 秒,依此类推)。如果您要发送多条消息,请考虑应用抖动。有关更多信息,请参阅处理重试。造成问题的发件人可能会被列入拒绝名单。
INTERNAL (HTTP 错误代码 = 500) 发生未知内部错误。服务器在尝试处理请求时遇到错误。您可以按照处理重试​​中的建议重试相同的请求。如果错误仍然存​​在,请联系 Firebase 支持。
THIRD_PARTY_AUTH_ERROR (HTTP 错误代码 = 401)APN 证书或 Web 推送身份验证密钥无效或丢失。无法发送针对 iOS 设备或 Web 推送注册的消息。检查您的开发和生产凭证的有效性。