Receber mensagens de forma confiável

O recebimento confiável de mensagens é o recurso mais importante de qualquer experiência de mensagens do Android. Também é importante implementar as mensagens de olho na integridade do sistema e na duração da bateria. Este documento orienta você sobre as principais estratégias e ferramentas para garantir que seu app Android receba mensagens de forma consistente, eficiente e confiável.

Mecanismos de entrega de mensagens

A melhor abordagem para mensagens confiáveis depende dos requisitos específicos do seu app. Considere fatores como:

  • Necessidades atuais em tempo real
  • Frequência de mensagens
  • Restrições de bateria

Mensagens em tempo real em primeiro plano

Quando o app está em primeiro plano, o usuário geralmente espera um volume razoavelmente alto de informações e quer saber coisas como:

  • A pessoa que está recebendo a mensagem está presente no dispositivo?
  • Eles estão digitando?
  • A pessoa leu a mensagem?

A maneira típica de oferecer suporte a esse tipo de troca de dados em tempo real é usar um protocolo cliente-servidor, como WebSockets. Os WebSockets permitem uma comunicação persistente e full-duplex entre o app e um servidor. A biblioteca OKHTTP inclui uma implementação do protocolo WebSocket que pode ser usada no seu cliente Android.

O Firebase Realtime Database oferece um back-end pré-criado e um front-end de cliente que podem lidar com esse tipo de comunicação em seu nome. Ele usa WebSockets internamente para comunicação em tempo real entre o cliente e o servidor.

Mensagens em tempo real em segundo plano

Quando o app não está mais em primeiro plano, é fundamental evitar ações que afetem negativamente a integridade do sistema e a duração da bateria. Como ainda é importante enviar notificações de mensagens de maneira confiável, recomendamos o uso do Firebase Cloud Messaging (FCM).

O FCM é uma solução de mensagens multiplataforma que envia notificações e mensagens de dados de maneira eficiente para dispositivos Android (e outros). Ele usa a camada de transporte do Android (ATL, na sigla em inglês) para dispositivos que têm os Serviços do Google, para que seu app possa ser notificado sobre mudanças quando não estiver mais em execução. A pontualidade da entrega de mensagens depende do estado do dispositivo, da prioridade da mensagem e se o app está sujeito a restrições devido ao modo de soneca ou app em espera.

Melhorar a confiabilidade do envio de mensagens

Para tornar a entrega de mensagens ainda mais robusta, considere estas estratégias: