有时在使用wifi网络的设备上不会收到Gcm通知

时间:2016-06-06 06:19:24

标签: android push-notification google-cloud-messaging android-wifi

在使用wifi网络的设备上,有时我必须刷新互联网连接才能接收通知。我已将time_to_live = 5设置为仅接收即时通知。似乎设备与gcm服务器的连接有时会被破坏。但是一旦我刷新wifi上网,通知就会开始正常。这很奇怪,实际上不可靠,因为我必须一次又一次地刷新互联网连接以接收通知。请帮忙!提前谢谢。

1 个答案:

答案 0 :(得分:1)

我在产品论坛中了解到同样的问题 - Push notifications delayed, Hearbeat Interval not reliable。根据旧线程:

  

Android推送通知通过手机和谷歌服务器之间的端口5228上的一个TCP连接工作。当手机连接到网络时建立此连接。所有Android推送应用程序(gmail,whatsapp,hangouts等)都使用Google Cloud Messaging(GCM)发送和接收认为该连接的推送通知。

     

根据定义,TCP连接没有超时。但在现实世界中,wifi路由器和移动运营商有一些规则来限制打开的tcp连接的数量。所以他们通常在没有数据包传输的情况下关闭/杀死他们认为是非活动连接的东西。例如,我的wifi路由器在300秒(5分钟)不活动后终止连接(tcp连接上没有数据包)。

然后,在这个谷歌主题 - Delay in getting GCM notification中给出了这个特殊情况不是GCM的错误,而是一个过度狂热的路由器。

要修复它:

  

我们发现我们可以每两分钟从GCM服务器(免费)使用ping保持连接。可能会对设备造成电池寿命影响,因为我怀疑触发cooee的15分钟计时器与您应该对齐内部警报的计时器相同,以最大限度地减少电池使用。

除了我的搜索,我还发现了这个SO帖子 - Do not receive GCM message while android device bein connected to WIFI,建议升级到FCM作为解决问题的一个,也许它也适合你。