They are using a foreground service. Since they have their own servers they are most probably polling after a certain interval, or maybe they are keeping a keep alive connection.
I guess GCM is a sticky service, so something like that will help them, maybe a Blackberry Push Service.
No need for a foreground service since it's surely polling. You just need a startserviceat. Gcm would be an answer as well, true. Actually I use both ways.
The advantage of GCM (Google push framework) is that it is a single connection shared by any app that wants to receive a push notification. The process doesn't need to be running to receive a push notification with GCM.