2013-06-17 17 views
8

Uygulamamda push bildirimi kullanıyorum. Bir bildirim gönderildiğinde bir bildirim görüntülüyordum, başka bir bildirim gönderirseniz (önceki bildirimi temizlemeden), yeni bildirimin yerini alır. Gönderme bildirimi aldığında yeni bir bildirim ekleyin (eski yerine değil)

Bu

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

kullanın ama bildirim yerine istemiyorum koddur, ben yeni bir bildirim olarak eklemek istedi.

cevap

9

Her defasında bildirim kimliği olarak farklı bir kimlik sağlamanız gerekir. En iyi yaklaşım, GCM'ye bir kimlik alanı göndermek olacaktır. Bu, daha sonra GCMIntentService'nin onMessage() yönteminde Intent.getExtras().getInt() aracılığıyla erişilebilmektedir.

Bu mümkün değilse, bildirim kimliğiniz olarak rastgele bir tam sayı oluşturmak için (int)Math.random()*10 gibi bir şey kullanmanızı öneririm. Bu, (kısmen) bildirimlerinizin birbirinin yerini almamasını sağlayacaktır.

2

basit sahip olmak

değişim Bildirim kimliği

mNotificationManager.notify(1, notification); 

yerine 1

için

daha her zaman bu Link

2

kullanın yeni bir bildirim numarası başvurmak yerine 1 hardcoding :

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

Ayrıca, bildirime benzersiz bir kimlik atamak için System.currentTimeMillis() öğesini de kullanabilirsiniz.

Ben Kullanım durumunuz ne olduğundan emin değilim
int id = (int) System.currentTimeMillis(); 
mNotificationManager.notify(id, notification); 
+1

Onun mükemmel bir fikir. Çünkü zaman kimliği asla tekrarlanmaz. Ben de aynısını php'de kullanıyorum. Teşekkürler. Ancak bildirmek için kodunuzu değiştirin (kimlik, bildirim); Diğerleri için yararlı olabilir –

+0

Teşekkürler Indra bahsettiğim için, şimdi id ile 1 değiştirdim. –

+0

thanqu sir .. gönderdiği için –

1

Biz yeni bildirimler üretecektir Benzersiz bildirim kimliği gerekir.

Durum çubuğunda görünecek bir bildirim gönderin. numaralı bir bildirim ile aynı kimlik başvurunuz tarafından zaten gönderilmiş ve henüz iptal edilmemişse, değiştirilen bilgilerle değiştirilir.

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

Örnek:

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