2016-03-17 5 views
0

Я использую уведомление GCM в своем приложении. Я анализирую данные в «onMessageReceived», где я получаю уникальный URL-адрес, соответствующий сообщению GCM. Когда я получаю одиночный уведомление. Все хорошо, но когда я получаю несколько проблем с уведомлениями, возникает, когда я нажимаю любое уведомление, полученное последним, набираемое сообщение.Как обрабатывать уведомления GCM при получении различных уведомлений GCM

public void onMessageReceived(String from, Bundle data) { 

     String message = data.getString("message"); 
     String country = data.getString("country"); 
     String url = data.getString("url"); 
     String description = data.getString("description"); 
     String id = data.getString("id"); 
} 

Я получаю URL из GCM оповещения

Intent intent = new Intent(this, Detailview.class).putExtra("url", url); 
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
stackBuilder.addParentStack(Mainscreen.class); 
stackBuilder.addNextIntent(intent); 

PendingIntent pendingIntent= stackBuilder.getPendingIntent(0, PendingIntent.FLAG_ONE_SHOT); 
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification_layout); 
contentView.setImageViewResource(R.id.image, R.drawable.ic_stat_ic_notification); 
contentView.setTextViewText(R.id.title, message); 
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
     .setSmallIcon(R.drawable.ic_stat_ic_notification) 
     .setAutoCancel(true) 
     .setContent(contentView) 
     .setSound(defaultSoundUri) 
     .setContentIntent(pendingIntent); 
NotificationManager notificationManager = 
     (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
notificationManager.notify(Integer.parseInt(id) 
      /*ID of notification */ 
     , notificationBuilder.build()); 

поэтому, когда я нажмите уведомление я могу запустить только последний URL Как я могу решить эту проблему?

+0

использовать различные идентификаторы NOTIFICATION_ID для различных типов уведомлений, которые соответственно создают отдельную полосу уведомлений в строке состояния. –

+0

notificationManager.notify (Integer.parseInt (id), notificationBuilder.build()) здесь я использую другой идентификатор – Sanjeev

ответ

0

использования

PendingIntent.FLAG_UPDATE_CURRENT 

при создании PendingIntent.

Также перед тем, как передать намерение PendingIntent, каждое действие будет действовать каждый раз. например:

intent.setAction(Long.toString(System.currentTimeMillis())); 
0

Просто добавьте время прибыть в differntiator для каждого уведомления

PendingIntent pendingIntent = PendingIntent.getActivity(this, (int) System.currentTimeMillis(), intent, 
       PendingIntent.FLAG_UPDATE_CURRENT); 
+0

Я просто дал этот ответ на разные темы, заданные автором. http://stackoverflow.com/questions/36059469/how-to-handle-different-gcm-notifications-clicks – maveroid

+0

@maveroid: Это !!!? отлично сработано... –

Смежные вопросы