13

我在我的应用程序中使用推送通知。我需要在推送通知传递时显示通知。如果我发送另一个通知(不清除以前的通知),它将替换旧通知。

这是我使用的代码:

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

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

4

6 回答 6

23

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

int id = (int) System.currentTimeMillis();
mNotificationManager.notify(id, notification);
于 2014-02-28T08:47:28.133 回答
11

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

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

于 2013-06-18T05:13:49.223 回答
3

simple you have to

change Notification id

  mNotificationManager.notify(1, notification);

instead of 1

for more refer this Link

于 2013-06-17T13:01:03.723 回答
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);
于 2013-06-17T13:01:10.477 回答
2

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

不要: 做:

于 2014-02-28T09:29:43.107 回答
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);
于 2016-08-05T12:26:37.283 回答