6

Push bildirimleri için Google Cloud Messaging (GCM) hizmetini kullanmak üzere ilk Android uygulamam üzerinde çalışıyorum. Sunucu uygulamamdan bir iletiyi başarılı bir şekilde gönderebildiğim noktaya geldim ve iletinin içeriğini istemci uygulamasındaki GCMIntentService sınıfımdaki onMessage olayına kaydet. Ancak, cihazda bir mesajın alındığına dair herhangi bir görsel gösterge göremiyorum. Mesajın, iPhone'daki gibi, telefondaki aşağı açılır bildirim listesinde görünmesini bekliyordum. Bunun manuel olarak kodlanması gerekiyor mu? Ayrıca, hangi etkinliğin şu anda aktif olduğuna bakılmaksızın mesajın görüntülenmesi için ortak bir yöntem var ve uygulama arka planda boşta mı? Herhangi bir yardım takdir edildi.Android - GCM push bildirimleri bildirim listesinde görünmüyor

cevap

7

Bu kod, ekranın üstündeki android sistem çubuğunda bir bildirim oluşturur. Bu kod, kullanıcıyı en üstteki bardaki bildirime tıkladıktan sonra kullanıcıyı "Home.class" a yönlendirecek yeni bir amaç oluşturacaktır. Mevcut etkinliğe göre spesifik bir şey yapmak isterseniz, GCMIntentService'den diğer etkinliklerinize yayın istekleri gönderebilirsiniz. Bu örnek çalışmaya hazır olması gerekir R.drawable ve R.String kaynakları kullanır ama size fikir vermek gerektiğini

Intent notificationIntent=new Intent(context, Home.class); 
generateNotification(context, message, notificationIntent); 

private static void generateNotification(Context context, String message, Intent notificationIntent) { 
    int icon = R.drawable.icon; 
    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); 

    // 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, PendingIntent.FLAG_UPDATE_CURRENT); 
    notification.setLatestEventInfo(context, title, message, intent); 
    notification.flags |= Notification.FLAG_AUTO_CANCEL; 
    notificationManager.notify(0, notification); 
} 

Not. Durum bildirimleri http://developer.android.com/guide/topics/ui/notifiers/index.html hakkında daha fazla bilgi için bkz. Bu, yayın alıcıları hakkında. Eğer GcmListenerService kullanıyorsanız http://developer.android.com/reference/android/content/BroadcastReceiver.html

+0

eklemek bu kodu kullanabilirsiniz. –

+0

Merhaba, https://github.com/marknutter/GCM-Cordova bu eklentiyi kullandım ve tüm talimatları takip ettim. Ancak, yalnızca uygulama içinde mesajlar alabiliyorum, ancak androids bildirim alanında bildirimleri görüntülemek için uygulamayı alamıyorum. tavsiye lütfen. Ben bu eklentiyi kullanıyorum neden phonegap @Zachary Moshansky kullanıyorum –

+0

Üzgünüm ama hiç Phonegap kullanmadım ve bildirimleri nasıl yapılacağı hakkında yorum yapamam. –

1

fantastik, çok teşekkür var senin onMessageReceived sendNotification()

@Override 
public void onMessageReceived(String from, Bundle data) { 
     String message = data.getString("message"); 
     sendNotification(message); 
} 

private void sendNotification(String message) { 
     Intent intent = new Intent(this, YOURCLASS.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 
     PendingIntent.FLAG_ONE_SHOT); 

     Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
       .setSmallIcon(R.drawable.ic_park_notification) 
       .setContentTitle("Ppillo Message") 
       .setContentText(message) 
       .setAutoCancel(true) 
       .setSound(defaultSoundUri) 
       .setContentIntent(pendingIntent); 

     NotificationManager notificationManager = 
       (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

     notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()); 
    } 
İlgili konular