2012-08-23 10 views
5

Ich arbeite an einer Chat-App in Android mit c2dm (gcm). Jede empfangene Nachricht löst eine Benachrichtigung aus, wenn meine App sie nicht direkt anzeigen kann. Das Problem ist, wenn der Benutzer nicht am Netz ist. In diesem Fall stapeln sich c2dm-Nachrichten und werden alle auf einmal geliefert, wenn er wieder online ist. Ein Klacks von Benachrichtigungstönen ist das Ergebnis des Hinzufügens aller Benachrichtigungen in einem Zeitraum von 1 Sekunde. Wie kann man das verhindern? Gewünschtes Verhalten ist, dass die Benachrichtigung Ton wird einmal abgespielt, während die TICKER und Benachrichtigung Inhalt auf dem neuesten Stand mit der letzten empfangenen Nachricht sindVerhindern mehrere Benachrichtigungstöne android

Antwort

5

Ich endete mit einem Alarm, der 1 Sekunde in die Zukunft gesetzt wurde. Wenn mehrere Alarme mit der gleichen Absicht eingestellt werden, werden die früheren automatisch gelöscht. Wenn also ein zweiter im Intervall von 1 Sekunde kommt, löscht er den ersten.

0

die collapse_key nutzen, um nur die letzte „Benachrichtigung“ des Stapels zu bearbeiten

Für mehr Infos, siehe https://developers.google.com/cloud-messaging/concept-options#collapsible_and_non-collapsible_messages

+0

Dies ist keine Option für mich, weil ich Nachrichten mit Payload verwende (dh nicht nur, dass eine neue Chat-Nachricht verfügbar ist, sondern auch der Nachrichtentext). Wenn also eine Nachricht minimiert ist, wird sie von meinem Client übersehen. Wenn GCM ein Flag hinzufügen würde, das angibt, dass eine zuvor gesendete Nachricht gelöscht wurde, kann ich den Server kontaktieren und eine Synchronisierung durchführen. Aber AFAIK gibt es keine Möglichkeit zu sagen, ob eine Nachricht zusammengebrochen ist. –

Verwandte Themen