How to show messages without folding
En escenarios de push en aplicaciones móviles, el problema de la agrupación de mensajes afecta directamente a la experiencia del usuario y a la eficiencia de entrega de mensajes. Este artículo, basado en el servicio AppPush, explica en detalle cómo lograr la visualización de mensajes sin agrupación mediante los tipos de mensaje Notification y Custom Message.

1. Comparación de tipos de mensaje y reglas de visualización
Mensajes de notificación
- Comportamiento predeterminado del sistema:
| Estado de la app | Reglas de visualización |
|---|---|
| Primer plano | Se puede controlar la agrupación mediante group_id |
| Segundo plano | Gestionado por el sistema operativo; se muestra en la barra de notificaciones con opciones de personalización limitadas (p. ej., agrupación, límites de cantidad) |
- Caso de uso: Mensajes push estándar que deben llegar a los usuarios a través de la barra de notificaciones del sistema.
Mensajes personalizados
Ventaja clave:
Independientemente de si la app está en primer plano, en segundo plano o se ha eliminado de la memoria, el código del cliente puede controlar totalmente cómo se muestra el mensaje (p. ej., posición del popup, lógica de agrupación).Caso de uso:
Mensajes de alta prioridad que requieren interacción personalizada (p. ej., actualizaciones del estado de pedidos, mensajería instantánea).
2. Dos soluciones para evitar la agrupación de mensajes
Solución 1: Usar mensajes de notificación
(FCM requiere que la app esté en primer plano; EngageLab funciona independientemente del estado de la app)
Principio
Utilizar el campo group_id para controlar la agrupación de mensajes:
- Para evitar la agrupación: asignar un
group_idúnico a cada mensaje.
Pasos de implementación
Compatible a partir de la versión V5.0.1 del SDK de Android y posteriores
Ejemplo de payload de la Push API:
{
"notification": {
"android": {
"group_id": "UNIQUE_GROUP_123" // Unique value prevents folding
}
}
}
Notas de compatibilidad
- Solo es compatible con los canales de push FCM y EngageLab.
- Cuando la app está en segundo plano, los mensajes pueden seguir viéndose afectados por las restricciones del sistema.
Solución 2: Usar mensajes personalizados (compatibilidad en todos los escenarios)
Principio
El cliente invoca activamente la API showNotification para renderizar los mensajes y omitir las restricciones del sistema.
Pasos de implementación
1. Enviar un mensaje personalizado
{
"message": {
"msg_content": "Your order has been shipped",
"content_type": "text",
"extras": {
"type": "priority_alert",
"style": "popup_bottom" // Custom display style
}
}
}
2. Gestión del mensaje en el cliente (ejemplo en Android)
public class UserReceiver extends MTCommonReceiver {
@Override
public void onCustomMessage(Context context, CustomMessage customMessage) {
ExampleLogger.i(TAG, "onCustomMessage:" + customMessage.toString());
showNotification(context, customMessage); // Trigger display
}
}
3. Lógica de visualización personalizada (evitar la agrupación)
public void showNotification(Context context, CustomMessage customMessage) {
NotificationMessage notificationMessage = new NotificationMessage()
.setMessageId(customMessage.getMessageId())
.setNotificationId("Your own ID; each notification should be unique")
.setTitle(customMessage.getTitle())
.setContent(customMessage.getContent())
.setgroup_id(customMessage.getMessageId()); // Key field to prevent folding
MTPushPrivatesApi.showNotification(context, notificationMessage);
}
Comparación de capacidades
| Capacidad | Mensaje de notificación | Mensaje personalizado |
|---|---|---|
| Compatibilidad con el estado de la app | FCM: solo primer plano; EngageLab: todos los estados | Todos los escenarios (primer plano/segundo plano) |
| Flexibilidad de IU | Limitada (dependiente del sistema) | Totalmente personalizable |
| Dependencia del canal | Requiere canales específicos (FCM, EngageLab) | Sin restricciones |
3. Notas
Compatibilidad de canales
- La funcionalidad
group_idactualmente solo es compatible con los canales FCM y EngageLab.
- La funcionalidad
Optimización del rendimiento
- Al enviar mensajes de alta frecuencia con
group_idúnico, supervisar la saturación de la caché de la barra de notificaciones (límite sugerido: ≤30 mensajes por dispositivo por hora).
- Al enviar mensajes de alta frecuencia con
4. Resumen
- Requisitos básicos: Se recomienda priorizar el uso de
group_idpara controlar la agrupación en mensajes de notificación (bajo coste de desarrollo). - Necesidades altamente personalizables: Elegir Custom Message; permite el control total del comportamiento de visualización mediante la lógica del cliente.
- Estrategia híbrida: Utilizar Custom Message para mensajes importantes (p. ej., pago realizado con éxito) y gestionar los mensajes estándar mediante
group_id.
Al elegir la estrategia adecuada, se puede mejorar significativamente la visibilidad de los mensajes y la participación de los usuarios.
