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

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

这是我使用的代码

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

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

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

如果这是不可能的,我建议使用类似(int)Math.random()*10来生成随机整数作为通知ID。 这将(部分)确保您的通知不会互相替换。

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

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

简单你必须

更改通知ID

  mNotificationManager.notify(1, notification); 

而不是1

有关更多信息,请参阅此

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

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

我不确定您的用例是什么,但Android设计指南建议不要这样做。

别: 做:

我们需要唯一的通知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);