Android: управление несколькими push-уведомлениями в устройстве приложения

Я разрабатываю приложение, в котором я реализовал функции Push-уведомления . Мой код onMessage – GCMIntentService.java:

@Override protected void onMessage(Context context, Intent data) { String message = data.getExtras().getString("message"); displayMessage(context, message); generateNotification(context, message); } 

И код генерацииNotification

 private static void generateNotification(Context context, String message) { int icon = R.drawable.ic_launcher; long when = System.currentTimeMillis(); NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); Notification notification = new Notification(icon, message, when); String title = context.getString(R.string.app_name); Intent notificationIntent = new Intent(context, GCMMessageView.class); notificationIntent.putExtra("message", message); // set intent so it does not start a new activity notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); PendingIntent intent = PendingIntent.getActivity(context, 0,notificationIntent, 0); notification.setLatestEventInfo(context, title, message, intent); notification.flags |= Notification.FLAG_AUTO_CANCEL; // Play default notification sound notification.defaults |= Notification.DEFAULT_SOUND; // Vibrate if vibrate is enabled notification.defaults |= Notification.DEFAULT_VIBRATE; notificationManager.notify(0, notification); } 

Этот код работает нормально. Я получаю push-сообщение и уведомление.

=> Но когда я отправляю более одного сообщения, уведомление переписывается. И я могу видеть только последнее уведомление в строке состояния.

Потребность приложения заключается в том, что – если я отправляю более одного уведомления, тогда все должно отображаться в строке состояния.

Поэтому, пожалуйста, расскажите мне, что я должен сделать для этого в своем коде.

Solutions Collecting From Web of "Android: управление несколькими push-уведомлениями в устройстве приложения"

Попытайтесь поместить другой идентификатор уведомления (т. Е. Nid) в намерение и уведомить вместо 0 для каждого нового уведомления, это будет препятствовать написанию вашего уведомления

  PendingIntent intent = PendingIntent.getActivity(context, nid,notificationIntent, 0); 

а также

notificationManager.notify(nid, notification);

Надеюсь, что это поможет вам

Привет, вам нужно передать уникальный идентификатор уведомления в методе уведомления. Ниже приведен код для уникального идентификатора уведомления:

 //"CommonUtilities.getValudeFromOreference" is the method created by me to get value from savedPreferences. String notificationId = CommonUtilities.getValueFromPreference(context, Global.NOTIFICATION_ID, "0"); int notificationIdinInt = Integer.parseInt(notificationId); notificationManager.notify(notificationIdinInt, notification); // will increment notification id for uniqueness notificationIdinInt = notificationIdinInt + 1; CommonUtilities.saveValueToPreference(context, Global.NOTIFICATION_ID, notificationIdinInt + ""); //Above "CommonUtilities.saveValueToPreference" is the method created by me to save new value in savePreferences. 

Дайте мне знать, если вам нужна более подробная информация или любой запрос. 🙂

Вам необходимо обновить свой Notification ID при запуске Notification. в

 notificationManager.notify(ID, notification); 

Как?

Чтобы настроить уведомление, чтобы оно могло быть другим, введите его с идентификатором уведомления, вызвав NotificationManager.notify(ID, notification). Чтобы изменить это уведомление после его создания, создайте объект NotificationCompat.Builder , создайте объект Notification из него и выпустите Notification с Different ID вы ранее не использовали.

Если предыдущее уведомление все еще отображается, система обновляет его из содержимого объекта « Notification object . Если предыдущее уведомление было отклонено, вместо него создается новое уведомление.

Для получения дополнительной информации посетите официальные документы

Получить случайные числа:

 Random random = new Random(); int m = random.nextInt(9999 - 1000) + 1000; 

Вместо:

 notificationManager.notify(0, notification); 

использовать:

 notificationManager.notify(m, notification); 
 notificationManager.notify(Different_id_everytime, notification);