2 Stimmen

Wie kann man Android-Benachrichtigungen ausblenden?

Ich sende alle 1/2 Stunde ein C2DM-Update an meine Android-App, die eine Benachrichtigung erstellt. Das Problem ist, wenn ich morgens aufwache, bekomme ich 15 Benachrichtigungen in der Statusleiste.

Wie behalte ich nur die letzte Benachrichtigung und überschreibe die vorherigen?

Ich habe versucht, in der C2DM-Dokumentation ( http://code.google.com/Android/c2dm/ ), in dem ein Parameter namens collapse_key erwähnt wird, aber ich konnte keine Erklärung finden, wie er zu verwenden ist, und ich bin mir auch nicht sicher, ob die Lösung auf der C2DM-Seite liegt.

Gracias.

5voto

DeRagan Punkte 22442

Wenn Sie frühere Benachrichtigungen, die für die Ansicht eingestellt wurden, rückgängig machen wollen, können Sie versuchen, eine dieser Markierungen zu setzen.

PendingIntent.FLAG_CANCEL_CURRENT or  PendingIntent.FLAG_UPDATE_CURRENT 

Ich glaube, so etwas sollte Ihre alte Benachrichtigung ersetzen

 NotificationManager mManager= (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
 Intent intent = new Intent(this,test.class);
 Notification notification = new Notification(R.drawable.icon, "Notify", System.currentTimeMillis());
 notification.setLatestEventInfo(this,"App Name","Description of the notification",
 PendingIntent.getActivity(this.getBaseContext(), 0, intent, PendingIntent.FLAG_CANCEL_CURRENT));
 mManager.notify(0, notification);

3voto

st0le Punkte 32967

Notification hat eine Eigenschaft namens number die eine kleine Zahl unter dem Symbol anzeigt (für Mehrfachbenachrichtigungen). So können Sie das gleiche Symbol für mehrere Benachrichtigungen verwenden.

Verwenden Sie die gleiche ID während Sie Ihre Benachrichtigung aktualisieren :) Prost.

1voto

Josh Clemm Punkte 2956

Zusätzlich zu den anderen Antworten gibt es einen Parameter in Ihrer C2DM-Anfrage, der lautet delay_while_idle . Vergewissern Sie sich, dass Sie das NICHT mit einbeziehen oder es falsch machen. Ihr Telefon ist im "Leerlauf", wenn der Bildschirm ausgeschaltet ist (d. h. wenn Sie schlafen). Google stellt alle Ihre Nachrichten auf dem Server in eine Warteschlange, bis das Telefon nicht im Leerlauf ist (d. h. wenn Sie den Bildschirm morgens einschalten). Dann sendet Google alle 15 Nachrichten auf einmal, und Sie zeigen sie zu diesem Zeitpunkt an.

In der Chrome-to-Phone-Quelle gibt es eine Methode namens sendNoRetry mit dieser Zeile:

if (delayWhileIdle) {
            postDataBuilder.append("&")
                .append(PARAM_DELAY_WHILE_IDLE).append("=1");
}

Vergewissern Sie sich, dass dies nicht der Fall ist. Dann werden die Google-Server Ihnen wie erwartet alle 30 Minuten Ihre C2DM-Nachricht senden.

0voto

Faizan Noor Punkte 748

collapse_id Taste sollte diese Aufgabe erfüllen. Um eine frühere Meldung zu aktualisieren, verwenden Sie einfach denselben Schlüssel. Um eine neue Benachrichtigung auf dem Gerät zu erstellen, verwenden Sie einen anderen Schlüssel.

Zum Beispiel, * für Chat-Benachrichtigungen den Schlüssel "chat" verwenden (collapse_id = "chat") * für Einladungen verwenden Sie den Schlüssel "invite" (collapse_id = "invite")

So werden alle unqiue collapse_id-Benachrichtigungen auf dem Gerät gruppiert.

Weitere Informationen finden Sie unter: https://documentation.onesignal.com/reference#create-notification

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X