2016-12-27 5 views
0

Я использую XMPP (smack) для создания приложения для обмена сообщениями, и я отправляю уведомления, когда получаю новое сообщение. Проблема в том, что если я получаю сообщения от двух разных пользователей, я могу видеть только последнее уведомление. Как я могу его изменить? Вот мой код.Как предотвратить уведомления Android от перезаписи?

Intent thisIntent = new Intent(mApplicationContext, ChatActivity.class); 
thisIntent.putExtra("EXTRA_CONTACT_JID",contactJid); 
PendingIntent contentIntent = PendingIntent.getActivity(mApplicationContext, 0, thisIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

NotificationCompat.Builder b = new NotificationCompat.Builder(mApplicationContext); 

b.setAutoCancel(true) 
     .setDefaults(Notification.DEFAULT_ALL) 
     .setWhen(System.currentTimeMillis()) 
     .setSmallIcon(R.drawable.fab_bg_mini) 
     .setTicker("Hearty365") 
     .setContentTitle("New message") 
     .setContentText(" You received a new message from " + contactJid) 
     .setContentIntent(contentIntent) 
     .setContentInfo("Info"); 
if(!ChatActivity.active){ 
    b.setDefaults(Notification.DEFAULT_LIGHTS| Notification.DEFAULT_SOUND); 
} 

NotificationManager notificationManager = (NotificationManager) mApplicationContext.getSystemService(Context.NOTIFICATION_SERVICE); 
notificationManager.notify(1, b.build()); 

И как вы можете видеть, я добавил дополнительный контакт, который очень важен для меня. Мне нужно установить его таким образом, что если пользователь нажмет одно уведомление, его contactJid будет таким, и если другой его контактJid будет другим.

ответ

3

notificationManager.notify(1, b.build()); ваша проблема - вы должны предоставить уникальный идентификатор для этого уведомления, as per the documentation:

Если уведомление с тем же идентификатором уже опубликовано приложение и до сих пор не отменен, его будет заменена обновленной информацией.

Вы производите постоянный 1 для каждого уведомления, а не уникальный идентификатор. Я предложил бы использовать хэш контактного JID (который я предполагаю, это строка):

notificationManager.notify(contactJid.hashCode(), b.build()); 
+0

ааа, я бы подумал об этом, т я использовал уникальные целые числа, но я не думаю о включении contactJid в расчет. Я еще не пробовал, но я уверен, что это сработает, я принимаю ответ – Prethia