Сейчас я использую 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()
+ "®istration_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);
почему вы задаете delay_while_idle = 1? –
from docs, delay_while_idle: если включено, указывает, что сообщение не следует отправлять немедленно, если устройство находится в режиме ожидания. –
В соответствии с документацией в http://developer.android.com/google/gcm/adv.html указано, что флаг delay_while_idle должен быть истинным, если устройство находится в режиме ожидания. Итак, я указал его на 1 (true). Если вы можете протестировать, plz сообщите мне значения – ARIJIT