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.
I tested this and it doesn't seem so. But you can force Android to send a regular notifications heartbeat by sending the following broadcast intents:
com.google.android.intent.action.MCS_HEARTBEAT
com.google.android.intent.action.GTALK_HEARTBEAT
I got this from the Push Notification Fixer app on Google Play (I'm not the developer). https://play.google.com/store/apps/details?id=com.andqlimax.pushfixer.noroot