我有一个带有一些数据的服务器,在我的应用程序中我想通过推送通知显示这些数据,所以问题是我没有得到如何在状态栏中与我的通知合作通知号码。在我的应用中,我从服务器收到ArrayList
通知。对于每个通知,我应该使用“通知构建器”,我将在其中放置诸如图标,名称,desc等的通知字段,至少我应该为它们中的每一个调用“NotificationManager.notify”,但是我如何能够显示我刚刚在我的状态栏中收到了3条消息(一个图标的指示符为3,而不是3个图标),并且不会增加通知声音,但在打开状态栏时仍会显示所有这些消息。
我的代码:
public void sendNotifications(ArrayList<Message> messages){
int notifyID = 0;
mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
for(Message message:messages){
Intent notificationIntent = new Intent(getApplicationContext(), MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(),0, notificationIntent,
PendingIntent.FLAG_CANCEL_CURRENT);
Resources res = getApplicationContext().getResources();
Notification.Builder builder = new Notification.Builder(getApplicationContext());
builder.setContentIntent(contentIntent)
.setSmallIcon(R.drawable.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(res, messages.media))
.setTicker("Got a new message")
.setWhen(System.currentTimeMillis())
.setAutoCancel(true)
.setContentTitle(message.titile)
.setContentText(message.text);
Notification notification = builder.getNotification();
mNotificationManager.notify(notifyID, notification);
notifyID++;
}
}
为了更加了解我想要的内容,我添加了一个图像
-pic1当我发送通知时 - 图标显示我有多少
-pic2当我打开状态栏时,它会显示我所有的通知
可以这样做吗?
答案 0 :(得分:1)
你不能这样做 - 将3个通知合并为一个。
您可以创建一个组合所有通知的通知,也可以仅限这样。
您无需获得3次通知。你也可以得到1分或2分。
我在这里看不到问题。如果有3个通知,您将在状态栏中看到3个图标。
每个图标代表下拉通知栏中的一个条目 - 一个图标代表多个条目并不真正有意义。
答案 1 :(得分:0)
Notification.Builder有方法setNumber来设置通知数。它在更新通知部分的Notification docs中进行了介绍。
答案 2 :(得分:0)
您可以使用大视图通知。 点击此处:Notifications
答案 3 :(得分:0)
通知ID必须是常量。如果通知ID不同,它将显示为不同的通知。所以你的代码必须是这样的,声明ID并计算为字段变量:
public static final int NOTIFICATION_ID = 1;
private int notificationCount = 1;
并改变这样的方法:
public void sendNotifications(ArrayList<Message> messages){
int notifyID = 0;
mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
for(Message message:messages){
Intent notificationIntent = new Intent(getApplicationContext(), MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
// Adds the back stack
stackBuilder.addParentStack(MainActivity.class);
// Adds the Intent to the top of the stack
stackBuilder.addNextIntent(notificationIntent);
// Gets a PendingIntent containing the entire back stack
PendingIntent contentIntent = stackBuilder.getPendingIntent(0,
PendingIntent.FLAG_CANCEL_CURRENT);
Resources res = getApplicationContext().getResources();
Notification.Builder builder = new Notification.Builder(getApplicationContext());
builder.setContentIntent(contentIntent)
.setSmallIcon(R.drawable.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(res, messages.media))
.setTicker("Got a new message")
.setWhen(System.currentTimeMillis())
.setAutoCancel(true)
.setContentTitle(message.titile)
.setContentText(message.text);
.setNumber(notificationCount++);
mNotificationManager.notify(NOTIFICATION_ID, builder.build());
}
}
由于