Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Práticas recomendadas para gerenciamento de token de registro FCM

Se você usar APIs do FCM para criar solicitações de envio de maneira programática, 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 Firebase console ou os dados exportados para o BigQuery, mostrando uma queda dramática (mas não 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.

Melhores práticas básicas

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

  • Armazene tokens de registro em seu servidor. Uma função importante para o servidor é controlar 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 servidores e atualizar esse carimbo de data / hora em intervalos regulares.
  • Retirar os tokens armazenados que se tornam obsoletos. Além de remover tokens em casos óbvios de respostas de token inválidas, 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 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 às assinaturas de tópico para tópicos de direcionamento.

Como observado em nossos guias de instalação do cliente, seu aplicativo deve recuperar esse token no arranque inicial e salve-o em seu servidor de aplicativo ao lado de um timestamp. Esse carimbo de data / hora deve ser implementado por seu código e seus servidores, pois não é fornecido a você pelos FCM SDKs.

Além disso, é importante salvar o token no servidor e atualizar o carimbo de data / hora 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.

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 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 visou tokens desatualizados ou inválidos:

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

Veja ErrorCodes para mais informações.

Se você receber uma dessas respostas para um token direcionado, é seguro excluir o 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 off-line permanentemente ou não.

Garantindo 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 considera 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ê:

  • Adicionar lógica aplicativo em seu aplicativo cliente para recuperar o atual símbolo usando a chamada de API adequada (como token(completion): para iOS ou getToken() para o Android) e, em seguida, enviar o token atual para o servidor de 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.

Qualquer que seja 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 fique inativo atualizará seu registro quando se tornar ativo novamente. Não há benefício em fazer a atualização com mais frequência do que semanalmente.

Cancelar inscrição de tokens desatualizados 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 mudar. Isso forma uma solução de autocorreção, em que as assinaturas reaparecem automaticamente quando um aplicativo se torna ativo novamente.
  2. Se uma instância aplicativo estiver ocioso por 2 meses (ou a sua própria janela staleness) você deve anular-lo de tópicos usando o Firebase administração SDK para eliminar o mapeamento / tópico token do backend FCM.

O benefício dessas duas etapas é que seus fanouts ocorrerão mais rapidamente, pois há menos tokens obsoletos para se espalhar, e suas instâncias de aplicativo obsoletas serão automaticamente assinadas novamente assim que 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ê envia 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 de forma consistente durante um período de tempo?
  • O token de registro foi atualizado em seus servidores nos últimos dois meses?
  • Para dispositivos Android, é que a API FCM dados relatam uma elevada percentagem de falhas na entrega de mensagem devido a droppedDeviceInactive ?

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