How to show messages without folding

Dans les scénarios de notification push sur application mobile, le problème de repliement des messages impacte directement l'expérience utilisateur et l'efficacité de la délivrabilité. Cet article, basé sur le service AppPush, explique en détail comment obtenir un affichage non replié des messages en utilisant les types Notification et Message personnalisé.

texte alternatif

1. Comparaison des types de messages et des règles d'affichage

Messages de notification

  • Comportement par défaut du système :
État de l'app Règles d'affichage
Premier plan Peut contrôler le repliement via group_id
Arrière-plan Géré par le système du téléphone ; affiché dans la barre de notification avec des options de personnalisation limitées (ex : repliement, limites de quantité)
  • Cas d'utilisation : Messages push standards devant atteindre les utilisateurs via la barre de notification système.

Messages personnalisés

  • Avantage clé :
    Que l'application soit au premier plan, en arrière-plan ou supprimée de la mémoire, le code côté client peut contrôler entièrement l'affichage du message (ex : position du pop-up, logique de repliement).

  • Cas d'utilisation :
    Messages prioritaires nécessitant une interaction personnalisée (ex : mises à jour de statut de commande, messagerie instantanée).

2. Deux solutions pour éviter le repliement des messages

Solution 1 : Utiliser les messages de notification

(FCM nécessite que l'app soit au premier plan ; EngageLab fonctionne quel que soit l'état de l'app)

Principe

Utiliser le champ group_id pour contrôler le regroupement des messages :

  • Pour éviter le repliement : attribuer un group_id unique à chaque message.

Étapes de mise en œuvre

Pris en charge à partir de la version V5.0.1 du SDK Android

Exemple de payload Push API :

{ "notification": { "android": { "group_id": "UNIQUE_GROUP_123" // Valeur unique pour éviter le repliement } } }
              
              {
  "notification": {
    "android": {
      "group_id": "UNIQUE_GROUP_123"  // Valeur unique pour éviter le repliement
    }
  }
}

            
Afficher ce bloc de code dans la fenêtre flottante

Notes de compatibilité

  • Prend uniquement en charge les canaux push FCM et EngageLab.
  • Les messages peuvent tout de même être soumis aux restrictions système lorsque l'app est en arrière-plan.

Solution 2 : Utiliser les messages personnalisés (prise en charge tous scénarios)

Principe

Le client appelle activement l'API showNotification pour afficher les messages et contourner les restrictions système.

Étapes de mise en œuvre

1. Envoyer un message personnalisé
{ "message": { "msg_content": "Votre commande a été expédiée", "content_type": "text", "extras": { "type": "priority_alert", "style": "popup_bottom" // Style d'affichage personnalisé } } }
              
              {
  "message": {
    "msg_content": "Votre commande a été expédiée",
    "content_type": "text",
    "extras": {
      "type": "priority_alert",
      "style": "popup_bottom"  // Style d'affichage personnalisé
    }
  }
}

            
Afficher ce bloc de code dans la fenêtre flottante
2. Traitement côté client (exemple Android)
public class UserReceiver extends MTCommonReceiver { @Override public void onCustomMessage(Context context, CustomMessage customMessage) { ExampleLogger.i(TAG, "onCustomMessage:" + customMessage.toString()); showNotification(context, customMessage); // Déclencher l'affichage } }
              
              public class UserReceiver extends MTCommonReceiver {
    @Override
    public void onCustomMessage(Context context, CustomMessage customMessage) {
        ExampleLogger.i(TAG, "onCustomMessage:" + customMessage.toString());
        showNotification(context, customMessage); // Déclencher l'affichage
    }
}

            
Afficher ce bloc de code dans la fenêtre flottante
3. Logique d'affichage personnalisée (éviter le repliement)
public void showNotification(Context context, CustomMessage customMessage) { NotificationMessage notificationMessage = new NotificationMessage() .setMessageId(customMessage.getMessageId()) .setNotificationId("Votre propre ID ; chaque notification doit être unique") .setTitle(customMessage.getTitle()) .setContent(customMessage.getContent()) .setgroup_id(customMessage.getMessageId()); // Champ clé pour éviter le repliement MTPushPrivatesApi.showNotification(context, notificationMessage); }
              
              public void showNotification(Context context, CustomMessage customMessage) {
    NotificationMessage notificationMessage = new NotificationMessage()
        .setMessageId(customMessage.getMessageId())
        .setNotificationId("Votre propre ID ; chaque notification doit être unique")
        .setTitle(customMessage.getTitle())
        .setContent(customMessage.getContent())
        .setgroup_id(customMessage.getMessageId()); // Champ clé pour éviter le repliement

    MTPushPrivatesApi.showNotification(context, notificationMessage);
}

            
Afficher ce bloc de code dans la fenêtre flottante

Comparaison des capacités

Capacité Message de notification Message personnalisé
Prise en charge de l'état de l'app FCM : seulement premier plan ; EngageLab : tous états Tous scénarios (premier plan/arrière-plan)
Flexibilité UI Limitée (dépend du système) Entièrement personnalisable
Dépendance canal Nécessite des canaux spécifiques (FCM, EngageLab) Aucune restriction

3. Remarques

  • Compatibilité des canaux

    • La fonctionnalité group_id ne prend actuellement en charge que les canaux FCM et EngageLab.
  • Optimisation des performances

    • Lors de l'envoi de messages à haute fréquence avec un group_id unique, surveillez la pression sur le cache de la barre de notification (limite suggérée : ≤30 messages par appareil et par heure).

4. Résumé

  • Besoins légers : Privilégiez l'utilisation de group_id pour contrôler le repliement dans les messages de notification — faible coût de développement.
  • Besoins hautement personnalisés : Optez pour le Message personnalisé — permet un contrôle total du comportement d'affichage via la logique client.
  • Stratégie hybride : Utilisez le Message personnalisé pour les messages importants (ex : paiement réussi), et gérez les messages standards via group_id.

En choisissant la bonne stratégie, vous pouvez considérablement améliorer la visibilité des messages et l'engagement des utilisateurs.

icon
Contactez-nous