收到推送通知时添加新通知(不替换旧通知)

时间:2013-06-17 12:59:20

标签: android notifications notificationmanager

我在我的应用上使用推送通知。 我曾经在推送通知到来时显示通知,如果我发送另一个通知(不清除之前的通知),它会替换新通知。

这是我使用的代码

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);

但我不想替换通知,我想将其添加为新通知。

6 个答案:

答案 0 :(得分:20)

您还可以使用System.currentTimeMillis()为通知分配唯一ID。

int id = (int) System.currentTimeMillis();
mNotificationManager.notify(id, notification);

答案 1 :(得分:9)

每次都需要提供不同的ID作为通知ID。最好的方法是将一个ID字段发送到GCM,然后可以通过GCMIntentService的onMessage()方法中的Intent.getExtras().getInt()访问该字段。

如果无法做到这一点,我建议使用类似(int)Math.random()*10的内容生成随机整数作为通知ID。这将(部分)确保您的通知不会互相替换。

答案 2 :(得分:3)

简单你必须

更改通知ID

  mNotificationManager.notify(1, notification);

而不是1

有关详情,请参阅此Link

答案 3 :(得分:2)

每次使用新的通知ID,而不是硬编码为1:

int i = x; //Generate a new integer everytime
mNotificationManager.notify(i, notification);

答案 4 :(得分:2)

我不确定您的用例是什么,但是the Android design guidelines recommend not doing it at all.

不要: 做:

答案 5 :(得分:1)

我们需要唯一的通知ID,它会生成新的通知。

发布要在状态栏中显示的通知。如果有通知       您的申请已经发布了相同的ID,但尚未取消,它将被更新的信息取代。

  @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);
}

示例:

int  id =(int) System.currentTimeMillis();
            mNotificationManager.notify(id, notify);