我遇到一些GCM推送通知在Android设备上无法正常到达的问题。经过几天的研究,我发现Android设备使用心跳来保持与GCM服务的连接。可悲的是,心跳似乎太高了,因此Android设备可以(但并非总是如此)失去与GCM服务的连接(例如,当从WLAN切换到3G时)。
在Google's product forums上已经有很多关于这个问题的讨论,但除了使用像parse.com这样的第三方推送服务之外似乎还没有真正的解决方案
现在,谷歌已宣布推出GCM云连接服务器,该服务器可让Android设备上的应用程序通过GCM将上游消息发送到第三方应用服务器。
当连接不可用时,是否有人知道上游消息的使用是否强制重新连接到GCM网络?
答案 0 :(得分:2)
我对此进行了测试,但似乎并非如此。但您可以通过发送以下广播意图强制Android发送常规通知心跳:
com.google.android.intent.action.MCS_HEARTBEAT
com.google.android.intent.action.GTALK_HEARTBEAT
我是通过Google Play上的Push Notification Fixer应用得到的(我不是开发人员)。 https://play.google.com/store/apps/details?id=com.andqlimax.pushfixer.noroot
答案 1 :(得分:0)
您可以在此处阅读问题的完整说明:
https://productforums.google.com/forum/#!msg/nexus/fslYqYrULto/lU2D3Qe1mugJ
简而言之,问题是由某些路由器或移动运营商引起的tcp空闲超时。