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()
                    + "&registration_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:

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

Другие вопросы по тегам