Android GCM消息需要很长时间

use*_*809 10 android android-intent google-cloud-messaging

我在我的应用程序中使用GCM,我遇到了问题.

大部分时间我都会立即收到消息,但有时消息会在5分钟之后一个接一个地发出,就像他们被困在路上一样.这是正常的吗?

and*_*max 8

客户端电话上的GCM框架部分在端口5228上使用TCP连接.此连接用于推送通知,但是作为每个tcp连接,它可以在某些路由器/运营商超时时应用严格的策略来终止非活动的tcp连接(tcp空闲超时).

大多数wifi路由器在5分钟后杀死非活动连接,例如我的.

GCM框架使用保持活动机制在wifi上每15分钟发送一次心跳网络数据包,在3G上每28分钟发送一次.对于所有用户而言,这种保持活动并不总是可靠的.

我在这里打开了谷歌的问题:https://productforums.google.com/forum/#! category_topic/nexus/ connecting- to-networks-and-devices/ fslYqYrULto 他们同意目前存在问题.


Dar*_*tle 6

我还没有注意到,到目前为止,在我极其有限的测试中,但根据我对文档的理解,这听起来并不令人惊讶:

GCM通常会在发送后立即发送消息.但是,这可能并非总是可行.例如,设备可能已关闭,脱机或以其他方式不可用.在其他情况下,发送方本身可能会通过使用delay_while_idle标志请求在设备变为活动状态之前不传递消息.最后,GCM可能会故意延迟消息,以防止应用程序消耗过多的资源并对电池寿命产生负面影响.

在其他文档中,在这个和语言之间,你所描述的听起来就像我期望的那样.不保证立即交货; 你通常会立即发送消息,但有时你不会.

  • 我正在构建一个应用程序,及时传递消息至关重要.到目前为止,我的经验是GCM大部分时间大约需要2-3秒.但有时可能需要5-10秒,偶尔需要1-2分钟.我不知道应用程序开发人员可以做些什么来减少交付时间或使它们更加一致,但如果有什么我肯定会喜欢知道! (6认同)
  • 这是2014年6月.我仍然面临这个问题. (2认同)