1

Сейчас я использую 3 устройства для тестирования: Samsung S7500, Galaxy Mexus, HTC. Если устройства активны, я получаю push-уведомление во всех трех устройствах. Если он находится в состоянии ожидания (заблокирован/спящий режим), я также получаю push-уведомление во всех трех устройствах. Но если он отключен при отправке push-сообщения, время, которое я получаю в сети, должно получать все ожидающие уведомления в соответствии с документацией. Но в этом случае я не получаю уведомления на всех устройствах. Специально в Galaxy Nexus, когда-то я получаю, если он находится в состоянии ожидания, а когда-то нет. Где я ошибаюсь? Может кто-нибудь мне помочь?Push Notification не получает Использование GCM в Galaxy Nexus с Android 4.2.1

Строка, отправленная на сервер GCM с сервера стороннего сервера (.Net): где «i» - текущее время.

String postdata= "collapse_key=score_update"+i+"&time_to_live=2419200&delay_while_idle=1&data.message=‌​"+ message + "&data.time=" + System.DateTime.Now.ToString() 
        + "&registration_id=" + deviceToken + ""; 

Упоминается все необходимые разрешения в манифесте согласно документации, включая Wakelock. Это мой код для notiication в классе GCMIntentService:

  int icon = R.drawable.notif; 
     long when = System.currentTimeMillis(); 
      NotificationManager notificationManager =(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
     Notification notification = new Notification(); 
     Intent notificationIntent = new Intent(context, DemoActivity.class); 
     notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
       | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
     PendingIntent intent = PendingIntent.getActivity(context, (int) when, 
       notificationIntent,0); 
      RemoteViews contentView = new RemoteViews(getPackageName(),R.layout.notify); 
     contentView.setImageViewResource(R.id.ImageViewpnotify, icon); 
     contentView.setTextViewText(R.id.TextViewpnotify, message); 
     notification.contentView = contentView; 
     notification.contentIntent= intent; 
     notification.icon = icon; 
     notification.flags |= Notification.FLAG_AUTO_CANCEL;  
      notification.defaults |= Notification.DEFAULT_SOUND;  
      notification.defaults |= Notification.DEFAULT_VIBRATE;  
     notification.ledARGB = 0xffff0000; 
     notification.flags |= Notification.FLAG_SHOW_LIGHTS; 
     notification.ledOnMS = 100; 
     notification.ledOffMS = 100; 
     notificationManager.notify((int)when, notification); 
+0

почему вы задаете delay_while_idle = 1? –

+0

from docs, delay_while_idle: если включено, указывает, что сообщение не следует отправлять немедленно, если устройство находится в режиме ожидания. –

+0

В соответствии с документацией в http://developer.android.com/google/gcm/adv.html указано, что флаг delay_while_idle должен быть истинным, если устройство находится в режиме ожидания. Итак, я указал его на 1 (true). Если вы можете протестировать, plz сообщите мне значения – ARIJIT

ответ

0

я знаю, что это поздно, чтобы ответить на ваш вопрос, но я была такая же проблема, и я сумел решить, используя следующую ссылку:

https://gist.github.com/mgartner/7092333

это ошибка на некоторых устройствах, где служба переходит в состояние ожидания и перестает получать какие-либо уведомления, поэтому решение заставляет его перезапускать каждые 5 мин. также вы можете использовать следующую ссылку, чтобы помочь U в настройке gcmreceiver:

http://code.google.com/p/gcm/source/browse/gcm-client/src/com/google/android/gcm/GCMBaseIntentService.java?r=8094cc6410b7dc2db452eb19cc9274fda1b2d6a2