Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android: Manage multiple push notification in device of an app

I am developing an application in which i implemented Push notification functionality. My code of onMessage - GCMIntentService.java is:

@Override
protected void onMessage(Context context, Intent data) {
    String message = data.getExtras().getString("message");

    displayMessage(context, message);
    generateNotification(context, message);
}

And code of generateNotification -

private static void generateNotification(Context context, String message) {
    int icon = R.drawable.ic_launcher;
    long when = System.currentTimeMillis();
    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(icon, message, when);

    String title = context.getString(R.string.app_name);

    Intent notificationIntent = new Intent(context, GCMMessageView.class);

    notificationIntent.putExtra("message", message);
    // set intent so it does not start a new activity
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent intent = PendingIntent.getActivity(context, 0,notificationIntent, 0);

    notification.setLatestEventInfo(context, title, message, intent);
    notification.flags |= Notification.FLAG_AUTO_CANCEL;

    // Play default notification sound
    notification.defaults |= Notification.DEFAULT_SOUND;

    // Vibrate if vibrate is enabled
    notification.defaults |= Notification.DEFAULT_VIBRATE;
    notificationManager.notify(0, notification);
}

This code is working fine. I am getting push message and notification.

=>But when i send more then one message the notification gets over write. And i am able to see only last notification in status bar.

The need of application is that - if i send more then one notification then all should be display in status bar.

So please guide me what should i do for that in my code.

like image 407
Manoj Fegde Avatar asked Apr 04 '14 09:04

Manoj Fegde


People also ask

How can Android handle multiple push notifications?

If you have multiple push providers you will need create your own Messaging Service to handle push notifications. You will need to pass new tokens to Swrve and make sure Swrve is set to handle incoming notifications.

How do I group push notifications on Android?

To add a group summary, proceed as follows: Create a new notification with a description of the group—often best done with the inbox-style notification. Add the summary notification to the group by calling setGroup() . Specify that it should be used as the group summary by calling setGroupSummary(true) .

How do I stack notifications on Android?

To create a stack, call setGroup() for each notification you want in the stack and specify a group key. Then call notify() to send it to the wearable.


2 Answers

Try to put different notification id (i.e. nid) in intent and notify instead of 0 for each new notification this will prevent over writing your notification

  PendingIntent intent = PendingIntent.getActivity(context, nid,notificationIntent, 0);

and

notificationManager.notify(nid, notification);

Hope this will help you

like image 156
Systematix Infotech Avatar answered Oct 11 '22 06:10

Systematix Infotech


Get random numbers:

Random random = new Random();
int m = random.nextInt(9999 - 1000) + 1000;

Instead of:

notificationManager.notify(0, notification);

use:

notificationManager.notify(m, notification);
like image 38
Rooban Avatar answered Oct 11 '22 06:10

Rooban