Edit: Es wird mir nicht erlauben, meine eigene Antwort für 2 Tage zu akzeptieren, aber ich habe es herausgefunden. Siehe meine Antwort unten, wenn Sie ein ähnliches Problem habenZurücksetzen der Nachrichtennummer für Posteingangsstil Benachrichtigungen
Ich arbeite daran, die Push-Benachrichtigungen aus meiner App zu stapeln und sie mit InboxStyle mit einem zusammenfassenden Text anzuzeigen. Momentan zeige ich bis zu 3 Benachrichtigungen an, gefolgt von einer "+ x mehr" -Nachricht, falls erforderlich. Um das zu tun, behalte ich die Anzahl der Nachrichten im Auge; Ich bin mir jedoch nicht sicher, wie ich die Anzahl der Nachrichten zurücksetzen kann, wenn der Benutzer auf die Benachrichtigung klickt. Wenn der Benutzer beispielsweise 3 Benachrichtigungen erhält und dann auf die Push-Benachrichtigung klickt, um in die App zu gelangen, möchte ich, dass die nächste Benachrichtigung als eine einzige Benachrichtigung angezeigt wird, aber sie wird gerade angezeigt: Nachricht eine Nachricht Nachricht c + 1 mehr . " Gibt es einen Listener, mit dem ich die Nachrichtennummer auf 0 zurücksetzen kann, wenn der Benutzer die Benachrichtigung abbricht? Code unten als Referenz:
public class GCMPushReceiverService extends GcmListenerService {
private static final String TAG = "GCMPushReceiverService";
private int objectTypeCode; //DLS
private String contentText;
private String objectKeyGUID; //DLG
private String alert;
private String sound;
private boolean vibrate;
private String contentTitle;
private String collapse_key;
private String tickerText;
private static int message_number = 0;
private static ArrayList<String> messages = new ArrayList<String>();
private static final String MY_GROUP = "my_group";
//with every new message
@Override
public void onMessageReceived(String from, Bundle data){
this.objectTypeCode = Integer.parseInt(data.getString("objectTypeCode"));
this.contentText = data.getString("contentText");
this.objectKeyGUID = data.getString("objectKeyGUID");
this.alert = data.getString("alert");
this.sound = data.getString("sound");
this.vibrate = Boolean.parseBoolean(data.getString("vibrate"));
this.contentTitle = data.getString("contentTitle");
this.collapse_key = data.getString("collapse_key");
this.tickerText = data.getString("ticker_Text");
messages.add(message_number, contentTitle +": " + contentText);
message_number++;
Log.d(TAG, "From: " + from);
sendNotification();
}
private void sendNotification() {
Intent intent;
if (objectKeyGUID != null && !objectKeyGUID.equals("")) intent = deepLink();
else intent = new Intent(this, LogInPage.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
int requestCode = 0;
PendingIntent pendingIntent =
PendingIntent.getActivity(this, requestCode, intent, PendingIntent.FLAG_ONE_SHOT);
Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder noBuilder = new NotificationCompat.Builder(this);
noBuilder.setSmallIcon(R.drawable.icon);
noBuilder.setContentText(contentText);
noBuilder.setTicker(tickerText);
noBuilder.setContentIntent(pendingIntent);
noBuilder.setSound(sound);
noBuilder.setGroup(MY_GROUP);
noBuilder.setAutoCancel(true);
Bitmap largeIcon = BitmapFactory.decodeResource(getResources(),
R.drawable.icon);
noBuilder.setLargeIcon(largeIcon);
//if we have more than one message, we want to display them in one notification, inbox style
//if it's more than 3, display the first three and have a "+ x more" message
//TODO: reset the message_number when we click the notification
if (message_number > 1) {
noBuilder.setContentTitle(message_number + " messages");
NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
for (int i = 0; i < message_number && i < 3; i++)
inboxStyle.addLine(messages.get(i));
if (message_number > 3)
inboxStyle.setSummaryText("+ " + (message_number - 3) + " more");
inboxStyle.setBigContentTitle(message_number + " Notifications");
//noBuilder.setContentTitle(message_number + " Notifications");
noBuilder.setStyle(inboxStyle);
}
else {
noBuilder.setContentTitle(contentTitle);
}
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, noBuilder.build()); //0 = ID of notification
}