目前我正在使用3台设备进行测试:三星S7500,Galaxy Mexus,HTC探索。如果设备处于活动状态,那么我将在所有三个设备中接收推送通知。如果它处于空闲状态(锁定/休眠),那么我也会在所有三个设备中接收推送通知。但是如果在发送推送消息时它处于脱机状态,那么我上网的时间应该按照文档接收所有待处理的通知。但在这种情况下,我没有收到所有设备的通知。特别是在Galaxy Nexus中,如果它处于空闲状态并且有时没有,我有时会收到它。哪里出错了?任何人都可以帮助我吗?
从第三方服务器(.Net)发送到GCM服务器的字符串结束:其中“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);
答案 0 :(得分:0)
我知道回答你的问题已经很晚了,但我遇到了同样的问题,我设法使用以下链接解决了这个问题:
https://gist.github.com/mgartner/7092333
在某些设备中,服务进入空闲状态并停止接收任何通知是一个错误,解决方法是强制它每5分钟重启一次。 您也可以使用以下链接来帮助您定制gcmreceiver: