接收Android GCM消息这么慢?(Receive Android GCM messages s

2019-09-02 01:08发布

谷歌云消息(Push消息)的问题。
我有两个智能手机(HTC感觉XE,Desire HD的)和平板电脑(三星Galaxy Note 10.1 WiFi版)。
有时候,我需要等待近15分钟收到GCM推送消息。 有时候,我立即收到GCM推送消息(30秒内)。
它是正常的吗? 或者仅仅因为我是在Wi-Fi连线?
如果是正常的,是有像“长轮询”我可以使用从服务器端获取消息的任何其他服务?
我目前使用GCM +轮询(AlarmManager)检索来自远程服务器的消息。
任何建议或更好的想法?

下面是我的测试结果:
左侧是服务器发送时间,而右侧则是客户端移动接收时间。
所有的测试结果是Wi-Fi连线环境下。
==========================
HD 23时10分十八秒,23:24:XX

车辆23时11分21秒,23点22分44秒

注23时10分二十零秒,23点14分54秒

==========================
HD 0点08分12秒,○点08分27秒

车辆0点07分55秒,0点07分58秒

注意0时08分04秒,0点13分35秒

==========================
HD〇时40分21秒,0时55分22秒

车辆0点39分56秒,0点40分14秒

注意零点40分13秒,○时40分59秒

谢谢!!

Answer 1:

GCM采用节流时,有过度使用,详细信息请参阅下列文件:

http://developer.android.com/google/gcm/adv.html#throttling



Answer 2:

请在这里阅读我的答案:

谷歌云消息-消息要么收到即时或长时间延误

这基本上是一个TCP超时问题



Answer 3:

您可以手动触发心跳通过下面的代码来保持连接。 如果它是空闲了特定时间段(有时5分钟)一些网络路由器将自动杀空闲套接字连接。 在每一个5分钟执行代码,以便连接将如果关闭重新建立。 但是,很明显减少的间隔会消耗更多的电池位(我不知道有多少是与此有关,因为时下的智能手机拿出高毫安电池)。

getApplicationContext().sendBroadcast(new Intent("com.google.android.intent.action.GTALK_HEARTBEAT"));
getApplicationContext().sendBroadcast(new Intent("com.google.android.intent.action.MCS_HEARTBEAT"));


文章来源: Receive Android GCM messages so slow?