Earlier, I tried holding partial wakelock so the device never sleep, this of course works alright, but drains battery very rapidly (5% / 30mins).
This is NOT ACCEPTABLE.
So, I tried something else :
automatically waking up the device regularly every 30mins, with the help of Tasker (which doesn't turn on the screen at all).
The result is :
7 hours after screen off and a good night sleep, in the morning I sent myself a BBMsg and it arrived perfectly in about 5 secs.
Battery consumption is totally acceptable : only 4% drop during 7 hours (dual sim ON, data ON).
That's days ago, and still works perfectly until now, I'm happy with it, so I'd like to share the AWESOMENESS.
I'm not sure about push notif from Google servers via GCM, I don't use any app which takes advantage of GCM, I only use BBM which uses its own servers.
In this case, you should first try adjusting heartbeat interval using PushNotificationFixer (which can't help me since it only resends heartbeat to Google server).
Tasker setup :
1. create new profile : Time
* uncheck both start & end time (so it starts and ends from midnight to midnight)
* check Repeat : every 6 minutes (during deep sleep, this 6 mins expands 5x to 30 mins)
2. add new task :
what you do in this task doesn't really matter, the point is to do something in a regular interval (I only use Alert Morse, so I know that the profile is still running)
if you're not familiar with Tasker, after installation you have to :
1. allow it as admin (system Settings > Device Administrators)
2. turn on its service (system Settings > Accessibility)
3. put it on auto-start list