Firebase: justaccess-one Escola de Inovação e tecnologia

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.
  • InvalidArgumentError com “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.
O reenvio roda de forma síncrona, dentro da requisição do disparo. Com os valores atuais, o pior caso é 3 tentativas e cerca de 0s de espera antes da tela responder.