Check out what’s new from Firebase at Google I/O 2022. Learn more

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

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 informados no console do Firebase ou os dados exportados para o BigQuery, mostrando uma queda drástica (mas não realmente válida) nas taxas de entrega. Este guia discute algumas medidas que você pode tomar para ajudar a garantir um direcionamento de mensagens eficiente 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 práticas recomendadas 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. É altamente recomendável implementar um carimbo de data/hora de token em seu código e seus servidores e atualizar esse carimbo de data/hora em intervalos regulares.
  • Remova os tokens armazenados que se tornam obsoletos . Além de remover tokens em casos óbvios de respostas de token inválidos, você provavelmente precisará monitorar outros sinais de que o token está obsoleto. Este guia discute algumas de suas opções para conseguir isso.

Recuperar e armazenar tokens de registro

Na inicialização inicial do seu aplicativo, o SDK do FCM 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 direcionar tópicos.

Conforme observado em nossos guias de configuração do cliente, seu aplicativo deve recuperar esse token na inicialização inicial e salvá-lo em seu servidor de aplicativos 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 carimbo de data/hora sempre que ele for alterado, como quando:

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

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

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

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

Consulte ErrorCodes para obter mais informações.

Se você receber uma dessas respostas para um token direcionado, é 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.

Garantir a atualização do token de registro

Determinar se um token é novo ou obsoleto nem sempre é simples. Para cobrir 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; caso contrário, um dispositivo ativo teria 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 a lógica do 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 do aplicativo para armazenamento (com timestamp ). Este pode ser um trabalho mensal configurado para cobrir todos os clientes/tokens.
  • Adicione a lógica do servidor para atualizar o carimbo de data/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 que ficar inativo atualizará seu registro quando se tornar ativo novamente. Não há nenhum benefício em fazer a atualização com mais frequência do que semanalmente.

Cancelar a inscrição 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 se inscrever novamente nos tópicos uma vez por mês e/ou sempre que o token de registro for alterado. Isso forma uma solução de autorrecuperação, em que as assinaturas reaparecem automaticamente quando um aplicativo fica ativo novamente.
  2. Se uma instância de aplicativo estiver ociosa por 2 meses (ou sua própria janela de inatividade), cancele a inscrição dos tópicos usando o SDK Admin do Firebase 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 distribuir, e suas instâncias de aplicativos obsoletos serão automaticamente reassinadas quando estiverem ativas novamente.

Medindo o sucesso da entrega

Geralmente, aconselhamos direcionar mensagens com base em ações observadas ou capturadas de instâncias de aplicativos usadas 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 de entrega de mensagens devido a droppedDeviceInactive ?

Para obter mais informações sobre entrega, consulte Noções básicas sobre entrega de mensagens .