Google云消息传递(推送消息)问题
我有两部智能手机(HTC Sensation XE,Desire HD)和平板电脑(三星Galaxy Note 10.1 Wifi)。
有时我需要等待将近15分钟才能收到GCM推送消息。有时我会立即收到GCM推送消息(30秒内)
这是正常的吗?或者仅仅因为我在Wifi连接下?
如果这是正常的,是否还有其他服务,如“长轮询”,我可以用来从服务器检索消息?
我目前正在使用GCM + Polling(AlarmManager)从远程服务器检索消息
任何建议或更好的想法?
以下是我的测试结果:
左侧是服务器发送时间,右侧是客户端移动接收时间
所有测试结果都在Wifi连接环境下
==========================
HD
23:10:18,23:24:XX
XE 23:11:21,23:22:44
请注意 23:10:20,23:14:54
==========================
HD
00:08:12,00:08:27
XE 00:07:55,00:07:58
请注意 00:08:04,00:13:35
==========================
HD
00:40:21,00:55:22
XE 00:39:56,00:40:14
请注意 00:40:13,00:40:59
谢谢!
答案 0 :(得分:0)
GCM在过度使用时使用限制,有关详细信息,请参阅以下文档:
答案 1 :(得分:0)
请在这里阅读我的答案:
Google Cloud Messaging - messages either received instantly or with long delay
这基本上是一个tcp超时问题
答案 2 :(得分:0)
您可以通过以下代码手动触发心跳以保持连接活动。如果某个网络路由器在特定时间段(有时是5分钟)处于空闲状态,它将自动终止空闲套接字连接。每5分钟执行一次代码,以便在关闭时重新建立连接。但是,显然减少间隔将消耗更多的电池(我不知道它在多大程度上相关,因为现在智能手机出现了高mAh电池)。
getApplicationContext().sendBroadcast(new Intent("com.google.android.intent.action.GTALK_HEARTBEAT"));
getApplicationContext().sendBroadcast(new Intent("com.google.android.intent.action.MCS_HEARTBEAT"));