I am having some issues with GCM push notifications not arriving properly on Android devices. After days of research I found out, that Android Devices use a heartbeat to kee
You can read the full description of the problem here:
https://productforums.google.com/forum/#!msg/nexus/fslYqYrULto/lU2D3Qe1mugJ
In few words, the problem is the tcp idle timeout caused by some routers or mobile carriers.