Add a new notification when push notification is received (not replace the previous)
Asked Answered
A

6

15

I am using push notifications in my app. I need to display a notification when a push notification delivered. If I send another notification (without clearing the previous notification), it will replace the old notification.

This is the code I use:

NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

int icon = R.drawable.ic_launcher;
CharSequence tickerText = "New notification Pending";
long time = System.currentTimeMillis();

Notification notification = new Notification(icon, tickerText, time);
notification.flags = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL;

// Context context = getApplicationContext();
CharSequence contentTitle = "Notifications";
CharSequence contentText = newMessage;
Intent notificationIntent = new Intent(this, LoginActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
        notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText,
        contentIntent);
mNotificationManager.notify(1, notification);

But I don't want to replace the notification, I want to add it as a new notification.

Applegate answered 17/6, 2013 at 12:59 Comment(0)
C
11

You need to supply a different ID as the notification ID each time. The best approach would be to send an ID field to GCM which can be then accessed via Intent.getExtras().getInt() in your GCMIntentService's onMessage() method.

If this is not possible, I'd suggest using something like (int)Math.random()*10 to generate a random integer number as your notification ID. This will (partially) ensure that your notifications will not replace each other.

Contumely answered 18/6, 2013 at 5:13 Comment(0)
A
25

You can also use System.currentTimeMillis() to assign unique id to your notification.

int id = (int) System.currentTimeMillis();
mNotificationManager.notify(id, notification);
Alvis answered 28/2, 2014 at 8:47 Comment(3)
Its an excellent idea. Because time id is never repeated. I use the same in php also. Thanks. But change your code to notify(id, notification); It may be useful for othersBattledore
Thanks Indra for mentioning, now I've replaced 1 with id.Alvis
thanqu sir ..for posted itVallie
C
11

You need to supply a different ID as the notification ID each time. The best approach would be to send an ID field to GCM which can be then accessed via Intent.getExtras().getInt() in your GCMIntentService's onMessage() method.

If this is not possible, I'd suggest using something like (int)Math.random()*10 to generate a random integer number as your notification ID. This will (partially) ensure that your notifications will not replace each other.

Contumely answered 18/6, 2013 at 5:13 Comment(0)
M
3

simple you have to

change Notification id

  mNotificationManager.notify(1, notification);

instead of 1

for more refer this Link

Magician answered 17/6, 2013 at 13:1 Comment(0)
R
2

Use a new notification ID every time instead of hardcoding to 1:

int i = x; //Generate a new integer everytime
mNotificationManager.notify(i, notification);
Recognize answered 17/6, 2013 at 13:1 Comment(0)
B
2

I am not sure what your use case is, but the Android design guidelines recommend not doing it at all.

Don't: Do:

Bobsledding answered 28/2, 2014 at 9:29 Comment(2)
Completely depends on the use case I think, and now thanks to notification channels, one can be more explicit about thisDufour
That's strange. And what if you have several different events in one application, like chat, order confirmation, payment status?Nev
E
1

We need Unique notification id which will generate the new notifications.

Post a notification to be shown in the status bar. If a notification with the same id has already been posted by your application and has not yet been canceled, it will be replaced by the updated information.

  @param id An identifier for this notification unique within your application.
  @param notification A {@link Notification} object describing what to show the user. 
  Must not be null.

public void notify(int id, Notification notification)
{
    notify(null, id, notification);
}

Example :

int  id =(int) System.currentTimeMillis();
            mNotificationManager.notify(id, notify);
Eserine answered 5/8, 2016 at 12:26 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.