2016-08-19 20 views
5

Android'de push bildirimleri uyguluyorum. Bildirimlerimi güncellemek istediğimde sorun geliyor. Bildirimler biriktirmek istiyorum, böylece bir bildirim görünürse, bunu yalnızca güncellerim ve bunu yaparım.Güncelleştirme Bildirme Android

mNotifyBuilder.setContentText(currentText) 
    .setNumber(++numMessages); 

Ama bir bildirim almak her zaman ++ numMessages özetlenebilir önce geri 0'a ayarlanır. Ekranda bir bildirim varsa, kaldığı yerden özetlerim. Eğer servis Belleği boşaltmak için işletim sistemi tarafından öldürülmüş olabilir beri senin alan değerleri, onMessageReceived için birden çağrıları arasında devam beklememelisiniz Genel olarak

//Class is extending GcmListenerService 
public class GCMPushReceiverService extends GcmListenerService { 

    //variables for message 1,on receiving job applications 
    String name; 
    String lastname; 
    String jobtypename; 
    String kasualjobdatetimepostedat; 
    String kasualjobcount; 
    int numMessages; 

    //This method will be called on every new message received 
    @Override 
    public void onMessageReceived(String from, Bundle data) { 
     //Getting the message from the bundle 
     String message = data.getString("message"); 
     String messageid = data.getString("messageid"); 

     if(messageid.compareTo("1")==0){ 
      name=data.getString("firstname"); 
      lastname=data.getString("lastname"); 
      jobtypename=data.getString("jobtype"); 
      kasualjobdatetimepostedat=data.getString("kasualjobdatetimepostedat"); 
     } 
     else 
     { 
      kasualjobcount=data.getString("kasualjobcount"); 
     } 
      //Displaying a notification with the message 
     sendNotification(message, messageid); 
    } 

    //This method is generating a notification and displaying the notification 
    private void sendNotification(String message,String messageid) { 
     Intent intent = new Intent(this, Main_Activity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     int requestCode = 0; 
     PendingIntent pendingIntent = PendingIntent.getActivity(this, requestCode, intent, PendingIntent.FLAG_ONE_SHOT); 
     Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 

     Log.d("notificationid", String.valueOf(messageid)); 
     if(messageid.compareTo("2")==0) {//messages to do with jobs around 2 
      String messageionkasualjobscount="There are "+kasualjobcount+" new jobs around you"; 
      NotificationCompat.Builder noBuilder = new NotificationCompat.Builder(this); 
      noBuilder.setSmallIcon(R.mipmap.ic_launcher) 
        .setContentTitle("KasualJobs2") 
        .setContentText(messageionkasualjobscount) 
        .setAutoCancel(true) 
        .setContentIntent(pendingIntent).setSound(Settings.System.DEFAULT_NOTIFICATION_URI); 

      NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
      notificationManager.notify(2, noBuilder.build()); //messageid = ID of notification 
     }else{//messages to with users applying for job 1 

      String messageionkasualjobapplication=name+ " "+ lastname+" has applied for the "+jobtypename+" you posted on "+kasualjobdatetimepostedat; 
      NotificationCompat.Builder noBuilder = new NotificationCompat.Builder(this); 
      noBuilder.setSmallIcon(R.mipmap.ic_launcher) 
        .setContentTitle("KasualJobs1") 
        .setContentText(messageionkasualjobapplication) 
        .setAutoCancel(true).setNumber(++numMessages) 
        .setContentIntent(pendingIntent).setSound(Settings.System.DEFAULT_NOTIFICATION_URI); 

      NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
      notificationManager.notify(1, noBuilder.build()); //messageid = ID of notification 

     } 
    } 

} 

cevap

2

: İşte kodudur. İletilerinizi bir veritabanında depolamanızı öneririm. Yeni bir mesaj aldığınızda, veritabanına ekleyin ve kullanıcı okuduğunda onu silin. Daha sonra ne kadar okunmamış mesajın olduğunu kolayca sorgulayabilirsiniz.

0

GCM yerine FCM kullanmanızı öneririm (çünkü GCM artık kullanılmayacaktır). Ve bildirimleri güncelleştirmek için & tarihini içeren bildirimleri depolamak için sqlite veritabanı kullanın. & okunduğunda bildirimi temizleyin ve veritabanından silin.