2013-06-17 11 views
8

Używam powiadomienia push na mojej aplikacji. Kiedyś wyświetlałem powiadomienie, gdy nadejdzie powiadomienie push, jeśli wyślę kolejne powiadomienie (bez usuwania poprzedniego powiadomienia), zastąpi ono nowe powiadomienie.Dodaj nowe powiadomienie po otrzymaniu powiadomienia push (nie zastępuj starego)

Jest to kod używam

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

ale nie chcę, aby zastąpić zgłoszenie, chciałem dodać je jako nowe zgłoszenia.

Odpowiedz

9

Musisz podać inny identyfikator jako identyfikator powiadomienia za każdym razem. Najlepszym rozwiązaniem byłoby wysłanie pola identyfikacyjnego do GCM, które następnie można uzyskać przez Intent.getExtras().getInt() w metodzie onMessage() GCMIntentService.

Jeśli nie jest to możliwe, sugeruję użycie czegoś takiego jak (int)Math.random()*10, aby wygenerować losową liczbę całkowitą jako identyfikator powiadomienia. Zapewni to (częściowo), że twoje powiadomienia nie zastąpią się nawzajem.

2

prosty trzeba

id zmiana Powiadomienie

mNotificationManager.notify(1, notification); 

zamiast 1

dłużej przekazać ten Link

2

użyć nowego powiadomienia ID za każdym razem zamiast sztywno do 1 :

int i = x; //Generate a new integer everytime 
mNotificationManager.notify(i, notification); 
19

Można również użyć System.currentTimeMillis(), aby przypisać unikalny identyfikator do powiadomienia.

int id = (int) System.currentTimeMillis(); 
mNotificationManager.notify(id, notification); 
+1

Jej doskonałe pomysł. Ponieważ identyfikator czasu nigdy się nie powtórzy. Używam tego samego w php również. Dzięki. Ale zmień kod, aby powiadomić (identyfikator, powiadomienie); Może być użyteczne dla innych –

+0

Dzięki Indra za wzmiankę, teraz zastąpiłem 1 identyfikatorem. –

+0

thanqu sir ..for wysłał go –

1

Musimy unikatowy identyfikator zgłoszenia, które będą generować nowe powiadomienia.

Zamieść powiadomienie, które ma być wyświetlane na pasku stanu. Jeśli powiadomienie o numerze identyfikacyjnym zostało już wysłane przez aplikację i nie zostało jeszcze anulowane, zostanie zastąpione zaktualizowanymi informacjami.

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

przykład:

int id =(int) System.currentTimeMillis(); 
      mNotificationManager.notify(id, notify); 
Powiązane problemy