So verhindern Sie, dass Nachrichten zusammengefasst werden

In mobilen App-Push-Benachrichtigungsszenarien wirkt sich das Zusammenfassen von Nachrichten direkt auf die Benutzererfahrung und die Effizienz der Nachrichtenzustellung aus. Basierend auf dem AppPush-Produkt wird in diesem Artikel подробно erläutert, wie sich durch technische Konfiguration eine nicht zusammengefasste Nachrichtendarstellung erreichen lässt. Dabei werden sowohl Notification- als auch Custom-Message-Typen abgedeckt.

alt text

1. Vergleich von Nachrichtentypen und Anzeigeregeln

Notification

  • Standardverhalten des Systems:
App Status Display Rule
Running in foreground Die Zusammenfassungslogik kann über group_id gesteuert werden
Running in background Wird vom mobilen Betriebssystem verarbeitet. Standardmäßig erscheinen Nachrichten in der Benachrichtigungsleiste, und das Anzeigeformat ist eingeschränkt (z. B. Zusammenfassung, Mengenbegrenzungen usw.), wodurch individuelles Styling schwierig ist.
  • Anwendbare Szenarien: Standard-Push-Benachrichtigungen, die Nutzer über die System-Benachrichtigungsleiste erreichen müssen.

Custom Message

  • Kernvorteil:
    Unabhängig davon, ob sich die App im Vordergrund oder Hintergrund befindet oder per One-Tap-Cleaning beendet wurde, kann das Anzeigeformat der Nachricht vollständig über clientseitigen Code gesteuert werden, einschließlich Popup-Position und Zusammenfassungslogik.

  • Anwendbare Szenarien:
    Nachrichten mit hoher Priorität, die eine benutzerdefinierte Interaktion erfordern, z. B. Erinnerungen zum Bestellstatus und Sofort-Chat-Nachrichten.

2. Zwei Lösungen, um zu verhindern, dass Nachrichten zusammengefasst werden

Lösung 1: Notification verwenden

(Für den FCM-Kanal muss sich die App im Vordergrund befinden; der EngageLab-Kanal unterscheidet nicht zwischen Vordergrund und Hintergrund.)

Implementierungsprinzip

Verwenden Sie das Feld group_id, um die Logik der Nachrichtengruppierung zu steuern:

  • Keine Zusammenfassung: Weisen Sie jeder Nachricht eine eindeutige group_id zu.

Schritte

Unterstützte Versionen: Android SDK V5.0.1 und höher

Beispiel für die Konfiguration der Push-API-Parameter (Request Body):

{ "notification": { "android": { "group_id": "UNIQUE_GROUP_123" // Verwenden Sie einen eindeutigen Wert, um das Zusammenfassen zu verhindern } } }
              
              {
  "notification": {
    "android": {
      "group_id": "UNIQUE_GROUP_123"  // Verwenden Sie einen eindeutigen Wert, um das Zusammenfassen zu verhindern
    }
  }
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Hinweise zur Kompatibilität

  • Es werden nur die Push-Kanäle FCM und EngageLab unterstützt.
  • Wenn die App im Hintergrund ausgeführt wird, unterliegt die Nachrichtenanzeige weiterhin den Einschränkungen des Systems.

Lösung 2: Custom Message verwenden (in allen Szenarien unterstützt)

Implementierungsprinzip

Rufen Sie clientseitig aktiv die API showNotification auf, um die Logik für das Rendern von Nachrichten vollständig zu steuern und Systembeschränkungen zu vermeiden.

Schritte

1. Eine benutzerdefinierte Nachricht senden
{ "message": { "msg_content": "Your order has been shipped", "content_type": "text", "extras": { "type": "priority_alert", "style": "popup_bottom" // Benutzerdefinierter Anzeigestil } } }
              
              {
  "message": {
    "msg_content": "Your order has been shipped",
    "content_type": "text",
    "extras": {
      "type": "priority_alert",
      "style": "popup_bottom"  // Benutzerdefinierter Anzeigestil
    }
  }
}

            
Diesen Codeblock im schwebenden Fenster anzeigen
2. Die Nachricht clientseitig verarbeiten (Android-Beispiel)
public class UserReceiver extends MTCommonReceiver { @Override public void onCustomMessage(Context context, CustomMessage customMessage) { ExampleLogger.i(TAG, "onCustomMessage:" + customMessage.toString()); showNotification(context, customMessage); // Anzeigelogik aufrufen } }
              
              public class UserReceiver extends MTCommonReceiver {
    @Override
    public void onCustomMessage(Context context, CustomMessage customMessage) {
        ExampleLogger.i(TAG, "onCustomMessage:" + customMessage.toString());
        showNotification(context, customMessage); // Anzeigelogik aufrufen
    }
}

            
Diesen Codeblock im schwebenden Fenster anzeigen
3. Beispiel für benutzerdefinierte Anzeigelogik (um das Zusammenfassen zu verhindern)
public void showNotification(Context context, CustomMessage customMessage) { NotificationMessage notificationMessage = new NotificationMessage() .setMessageId(customMessage.getMessageId()) .setNotificationId("Define this yourself, but make sure each notification is different") .setTitle(customMessage.getTitle()) .setContent(customMessage.getContent()) .setgroup_id(customMessage.getMessageId()); // Schlüsselfeld zum Verhindern der Zusammenfassung MTPushPrivatesApi.showNotification(context, notificationMessage); }
              
              public void showNotification(Context context, CustomMessage customMessage) {
    NotificationMessage notificationMessage = new NotificationMessage()
        .setMessageId(customMessage.getMessageId())
        .setNotificationId("Define this yourself, but make sure each notification is different")
        .setTitle(customMessage.getTitle())
        .setContent(customMessage.getContent())
        .setgroup_id(customMessage.getMessageId()); // Schlüsselfeld zum Verhindern der Zusammenfassung

    MTPushPrivatesApi.showNotification(context, notificationMessage);
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Vergleich der Vorteile

Capability Notification Custom Message
Supported app status FCM: nur Vordergrund; EngageLab: Vordergrund und Hintergrund Alle Szenarien (Vordergrund/Hintergrund)
Style flexibility Begrenzt (systemabhängig) Vollständig anpassbar
Channel dependency Erfordert bestimmte Kanäle (FCM, EngageLab) Keine Einschränkung

3. Hinweise

  1. Kanal-Kompatibilität

    • Die Funktion group_id unterstützt derzeit nur FCM- und EngageLab-Kanäle. Andere Kanäle werden aktuell nicht unterstützt.
  2. Leistungsoptimierung

    • Wenn Nachrichten häufig mit unabhängigen group_id-Werten gesendet werden, überwachen Sie die Cache-Belastung der Benachrichtigungsleiste auf Systemseite (empfohlen: ≤30 Nachrichten pro Gerät und Stunde).

4. Zusammenfassung

  • Leichtgewichtige Anforderungen: Verwenden Sie bevorzugt group_id, um die Zusammenfassungslogik von Benachrichtigungen zu steuern, da dies geringere Entwicklungskosten verursacht.
  • Hochgradig angepasste Anforderungen: Wählen Sie die Custom-Message-Lösung, um über clientseitigen Code in allen Szenarien eine vollständig steuerbare Anzeige zu erreichen.
  • Hybride Strategie: Verwenden Sie Custom Messages für wichtige Benachrichtigungen (z. B. Zahlungsbestätigungen) und group_id-Verwaltung für reguläre Benachrichtigungen.

Durch die Wahl der geeigneten Lösung können Sie die Zustellrate kritischer Nachrichten deutlich verbessern und die Nutzerinteraktion optimieren.

Icon Solid Transparent White Qiyu
Vertrieb kontaktieren