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.

alt text

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 } } }
              
              {
  "notification": {
    "android": {
      "group_id": "UNIQUE_GROUP_123"  // Unique value prevents folding
    }
  }
}

            
Este bloque de código se muestra en una ventana flotante

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 } } }
              
              {
  "message": {
    "msg_content": "Your order has been shipped",
    "content_type": "text",
    "extras": {
      "type": "priority_alert",
      "style": "popup_bottom"  // Custom display style
    }
  }
}

            
Este bloque de código se muestra en una ventana flotante
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 } }
              
              public class UserReceiver extends MTCommonReceiver {
    @Override
    public void onCustomMessage(Context context, CustomMessage customMessage) {
        ExampleLogger.i(TAG, "onCustomMessage:" + customMessage.toString());
        showNotification(context, customMessage); // Trigger display
    }
}

            
Este bloque de código se muestra en una ventana flotante
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); }
              
              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);
}

            
Este bloque de código se muestra en una ventana flotante

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_id actualmente solo es compatible con los canales FCM y EngageLab.
  • 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).

4. Resumen

  • Requisitos básicos: Se recomienda priorizar el uso de group_id para 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.

Icon Solid Transparent White Qiyu
Contacto