Mensajes contraíbles y no contraíbles

Un mensaje no contraíble significa que cada mensaje individual se entrega al dispositivo. Un mensaje no contraíble entrega cierto contenido útil. Mientras que un mensaje contraíble es como un "ping" que no tiene contenido, destinado a comunicarse con el servidor y recuperar datos.

Algunos casos prácticos típicos de mensajes no contraíbles son los mensajes de chat o los mensajes críticos. En Android, existe un límite de 100 mensajes que se pueden almacenar sin colapsar. Si se alcanza el límite, todos los mensajes almacenados se descartan. Cuando el dispositivo vuelve a estar en línea, recibe un mensaje especial que indica que se alcanzó el límite. Entonces, la app puede manejar la situación, por lo general, a través de una solicitud de sincronización completa desde el servidor de apps.

Un mensaje contraíble es un mensaje que se puede reemplazar por un mensaje nuevo si todavía no se ha enviado al dispositivo.

Un caso de uso común de los mensajes contraíbles son los mensajes que se utilizan para indicar a una app para dispositivos móviles que sincronice los datos del servidor. Un ejemplo sería una app de deportes que muestra marcadores actualizados a los usuarios. Solo el mensaje más reciente es relevante.

Para marcar un mensaje como contraíble en Android, incluye el parámetro collapse_key en la carga útil del mensaje. Según la configuración predeterminada, la clave de contracción es el nombre del paquete de la app registrado en Firebase console. El servidor de FCM puede almacenar simultáneamente cuatro mensajes contraíbles diferentes por dispositivo, cada uno con una clave de contracción diferente. Si excedes esta cantidad, FCM únicamente conserva cuatro claves de contracción, sin ningún factor determinante sobre cuáles se conservan.

De forma predeterminada, se pueden contraer los mensajes por temas sin carga útil. Los mensajes de notificación siempre se pueden contraer y, además, omitirán el parámetro collapse_key.

¿Cuál debería usar?

Los mensajes contraíbles son la opción preferida desde el punto de vista del rendimiento, siempre que tu app no necesite usar mensajes no contraíbles. Sin embargo, si usas mensajes contraíbles, recuerda que FCM solo permite el uso de un máximo de cuatro claves de contracción por token de registro en cualquier momento para que FCM las utilice.

Caso de uso Modo de envío
No contraíble Cada mensaje es importante para la app cliente y debe entregarse. Excepto para los mensajes de notificación, todos los mensajes son no contraíbles de forma predeterminada.
Contraíble Cuando hay un mensaje más reciente que procesa un mensaje más antiguo relacionado que es irrelevante para la app cliente, FCM reemplaza el mensaje más antiguo. Por ejemplo, los mensajes de notificación desactualizados. Determina el parámetro apropiado en tu solicitud de mensaje: