Push-уведомление не получено с помощью GCM в Galaxy Nexus с Android 4.2.1
Сейчас для тестирования я использую 3 устройства: Samsung S7500, Galaxy Mexus, HTC исследовать. Если устройства активны, то я получаю push-уведомление на всех трех устройствах. Если он находится в режиме ожидания (заблокирован / находится в спящем режиме), я также получаю push-уведомление на всех трех устройствах. Но если он находится в автономном режиме, когда push-сообщение было отправлено, время, когда я в сети, должно получать все ожидающие уведомления в соответствии с документацией. Но в этом случае я не получаю уведомления на всех устройствах. Особенно в Galaxy Nexus, иногда я получаю, если он находится в режиме ожидания, а иногда нет. Где я ошибаюсь? Может кто-нибудь мне помочь?
Строка, отправленная на сервер 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. Это мой код для уведомления в классе 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);
1 ответ
Я знаю, что уже поздно отвечать на ваш вопрос, но у меня возникла та же проблема, и мне удалось решить ее по следующей ссылке:
https://gist.github.com/mgartner/7092333
это ошибка в некоторых устройствах, когда служба переходит в состояние ожидания и перестает получать какие-либо уведомления, решение состоит в том, чтобы перезапускать ее каждые 5 минут. Также вы можете использовать следующую ссылку, чтобы помочь вам в настройке вашего gcmreceiver: