Recibir mensajes de forma confiable

Recibir mensajes de forma confiable es la función más importante de cualquier experiencia de mensajería de Android. También es importante implementar mensajes teniendo en cuenta el estado del sistema y la duración de la batería. En este documento, se explican las estrategias y herramientas clave para garantizar que tu app para Android reciba mensajes de forma coherente, eficiente y confiable.

Mecanismos de entrega de mensajes

El mejor enfoque para la mensajería confiable depende de los requisitos específicos de tu app. Ten en cuenta factores como los siguientes:

  • Necesidades actuales en tiempo real
  • Frecuencia de mensajes
  • Limitaciones de la batería

Mensajería en tiempo real en primer plano

Cuando tu app está en primer plano, el usuario suele esperar un volumen de información razonablemente alto y quiere saber cosas como las siguientes:

  • ¿La persona a la que se le envía el mensaje está presente en su dispositivo?
  • ¿Están escribiendo?
  • ¿Leyó el mensaje?

La forma habitual de admitir este tipo de intercambio de datos en tiempo real es usar un protocolo cliente-servidor, como WebSockets. WebSockets permite una comunicación dúplex completa y persistente entre tu app y un servidor. La biblioteca OKHTTP incluye una implementación del protocolo WebSocket que puedes usar en tu cliente de Android.

Firebase Realtime Database proporciona un backend prediseñado y un frontend del cliente que pueden controlar este tipo de comunicación por ti. Internamente, usa WebSockets para la comunicación en tiempo real entre su cliente y su servidor.

Mensajería en tiempo real en segundo plano

Cuando tu app ya no está en primer plano, es fundamental evitar acciones que afecten negativamente el estado del sistema y la duración de la batería. Dado que sigue siendo importante entregar notificaciones de mensajes de forma confiable, te recomendamos que uses Firebase Cloud Messaging (FCM).

FCM es una solución de mensajería multiplataforma que envía notificaciones y mensajes de datos de manera eficiente a dispositivos Android (y otros). Aprovecha la capa de transporte de Android (ATL) para los dispositivos que tienen servicios de Google, de modo que tu app pueda recibir notificaciones de cambios cuando ya no se esté ejecutando. La puntualidad de la entrega de mensajes depende del estado del dispositivo, la prioridad del mensaje y si tu app está sujeta a restricciones debido al modo Descanso o al modo de espera de la app.

Mejora la confiabilidad de la entrega de mensajes

Para que la entrega de mensajes sea aún más sólida, considera estas estrategias: