Configurações
Tudo que afeta o envio mora aqui — nada está fixo no código.
Erros permanentes
Retentar não adianta. Nem todo permanente é culpa do token: só os três primeiros desativam o aparelho (com a opção abaixo ligada), fazendo-o aparecer como token inválido — desativado.
UnregisteredError— o app foi desinstalado, os dados foram limpos, ou o token expirou e foi trocado.SenderIdMismatchError— o token pertence a outro projeto Firebase. Credencial ativa e app não são do mesmo projeto.InvalidArgumentErrorcom “APNs device token is invalid” — a Apple recusou o device token: app reinstalado, ou token de Dev Build (development) enviado contra um build TestFlight/App Store (production).
Permanentes que não desativam token, porque o erro é de configuração:
ThirdPartyAuthError (a chave APNs
.p8 no console do Firebase está ausente, expirada ou com
Team/Bundle ID errado) e os demais
InvalidArgumentError (payload recusado —
algum campo da aba Entrega saiu fora do aceito).
Erros transitórios
O token continua válido; o problema é do momento. Estes são retentados com backoff, e nunca desativam o token.
QuotaExceededError— limite de envio atingido.UnavailableError— FCM indisponível no momento.InternalError— erro interno do FCM.