Acompanhe tudo o que foi anunciado no Firebase Summit e saiba como usar o Firebase para acelerar o desenvolvimento de apps e executá-los com confiança. Saiba mais

Práticas recomendadas para gerenciamento de token de registro do FCM

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Se você usar APIs do FCM para criar solicitações de envio programaticamente, poderá descobrir que, com o tempo, está desperdiçando recursos enviando mensagens para dispositivos inativos com tokens de registro obsoletos. Essa situação pode afetar os dados de entrega de mensagens relatados no console do Firebase ou os dados exportados para o BigQuery, aparecendo como uma queda drástica (mas não válida) nas taxas de entrega. Este guia discute algumas medidas que você pode tomar para ajudar a garantir um direcionamento eficiente de mensagens e relatórios de entrega válidos.

Práticas recomendadas básicas

Existem algumas práticas fundamentais que você deve seguir em qualquer aplicativo que use APIs do FCM para criar solicitações de envio programaticamente. As principais boas práticas são:

  • Armazene tokens de registro em seu servidor. Uma função importante para o servidor é acompanhar o token de cada cliente e manter uma lista atualizada de tokens ativos. Recomendamos implementar um timestamp de token em seu código e seus servidores e atualizar esse timestamp em intervalos regulares.
  • Remova os tokens armazenados que se tornam obsoletos . Além de remover tokens em casos óbvios de respostas de token inválido, você provavelmente precisará monitorar outros sinais de que o token está obsoleto. Este guia discute algumas de suas opções para conseguir isso.

Recupere e armazene tokens de registro

Na inicialização inicial de seu aplicativo, o FCM SDK gera um token de registro para a instância do aplicativo cliente. Este é o token que você deve incluir em solicitações de envio direcionadas da API ou adicionar a assinaturas de tópicos para tópicos de direcionamento.

Conforme observado em nossos guias de configuração do cliente, seu aplicativo deve recuperar esse token na inicialização inicial e salvá-lo no servidor do aplicativo junto com um carimbo de data/hora . Esse carimbo de data/hora deve ser implementado por seu código e seus servidores, pois não é fornecido a você pelos SDKs do FCM.

Além disso, é importante salvar o token no servidor e atualizar o timestamp sempre que ele mudar, como quando:

  • O aplicativo é restaurado em um novo dispositivo
  • O usuário desinstala/reinstala o aplicativo
  • O usuário limpa os dados do aplicativo.

Detecte respostas de token inválidas do back-end do FCM

Certifique-se de detectar respostas de token inválidas do FCM e responda excluindo de seu sistema todos os tokens de registro que são conhecidos como inválidos. Com a API HTTP v1, essas mensagens de erro podem indicar que sua solicitação de envio visava tokens obsoletos ou inválidos:

  • UNREGISTERED (HTTP 404)
  • INVALID_ARGUMENT (HTTP 400)

Consulte ErrorCodes para obter mais informações.

Se você receber qualquer uma dessas respostas para um token de destino, é seguro excluir seu registro desse token, pois ele nunca mais será válido. No entanto, lembre-se de que ainda haverá casos em que um token é de fato inválido, mas não há indicação disso. Por exemplo, às vezes o back-end do FCM não pode verificar se um dispositivo ficou offline permanentemente ou não.

Garantindo a atualização do token de registro

Determinar se um token é novo ou obsoleto nem sempre é simples. Para abranger todos os casos, você deve adotar um limite para quando considerar os tokens obsoletos; nossa recomendação é de dois meses. Qualquer token com mais de dois meses provavelmente será um dispositivo inativo; um dispositivo ativo teria, de outra forma, atualizado seu token.

Atualizar tokens regularmente

Recomendamos que você recupere e atualize periodicamente todos os tokens de registro em seu servidor. Isso requer que você:

  • Adicione lógica de aplicativo em seu aplicativo cliente para recuperar o token atual usando a chamada de API apropriada (como token(completion): para plataformas Apple ou getToken() para Android) e, em seguida, envie o token atual para o servidor de aplicativos para armazenamento (com registro de data e hora ). Isso pode ser um trabalho mensal configurado para cobrir todos os clientes/tokens.
  • Adicione a lógica do servidor para atualizar o registro de data e hora do token em intervalos regulares, independentemente de o token ter sido alterado ou não.

Seja qual for o padrão de tempo que você seguir, certifique-se de atualizar os tokens periodicamente. Uma frequência de atualização de uma vez por mês provavelmente atinge um bom equilíbrio entre o impacto da bateria e a detecção de tokens de registro inativos. Ao fazer essa atualização, você também garante que qualquer dispositivo inativo atualizará seu registro quando for ativado novamente. Não há nenhum benefício em fazer a atualização com mais frequência do que semanalmente.

Cancelar assinatura de tokens obsoletos de tópicos

Gerenciar assinaturas de tópicos para remover tokens de registro obsoletos é outra consideração. Envolve duas etapas:

  1. Seu aplicativo deve assinar novamente os tópicos uma vez por mês e/ou sempre que o token de registro for alterado. Isso forma uma solução de autocorreção, em que as assinaturas reaparecem automaticamente quando um aplicativo fica ativo novamente.
  2. Se uma instância do aplicativo estiver inativa por 2 meses (ou sua própria janela de desatualização), cancele sua inscrição nos tópicos usando o Firebase Admin SDK para excluir o mapeamento de token/tópico do back-end do FCM.

O benefício dessas duas etapas é que seus fanouts ocorrerão mais rapidamente, pois há menos tokens obsoletos para os quais fan-out, e suas instâncias de aplicativo obsoletas serão recadastradas automaticamente assim que estiverem ativas novamente.

Medindo o sucesso da entrega

Geralmente, aconselhamos o direcionamento de mensagens com base em ações observadas ou capturadas de instâncias de aplicativos usados ​​ativamente. Isso é especialmente importante se você enviar mensagens regularmente para tópicos com um grande número de assinantes; se uma parte desses assinantes estiver realmente inativa, o impacto em suas estatísticas de entrega pode ser significativo ao longo do tempo.

Antes de direcionar mensagens para um token, considere:

  • O Google Analytics, os dados capturados no BigQuery ou outros sinais de rastreamento indicam que o token está ativo?
  • As tentativas de entrega anteriores falharam consistentemente durante um período de tempo?
  • O token de registro foi atualizado em seus servidores nos últimos dois meses?
  • Para dispositivos Android, a API de dados do FCM relata uma alta porcentagem de falhas na entrega de mensagens devido a droppedDeviceInactive ?

Para obter mais informações sobre entrega, consulte Compreendendo a entrega de mensagens .