E.g. an on premises push notification service that can be used to send a notification to a users phone based on an event that is triggered by our server?
With respect to Android, the answer is "not really". Your options are:
Implement your "push" mechanism in the form of some message queue, where the devices poll looking for messages every so often, or
Use a WakeLock
and WifiLock
to keep the device (and WiFi) powered on constantly, then use something like MQTT for the push message
Either of these will be bad for the battery, though the first one is more configurable in terms of power drain (e.g., if you only check for messages once per hour, it won't be bad).
The reason why GCM can keep the power drain low is because of special hooks for mobile data connections within the OS and chipset, such that the CPU can power down while retaining an open socket connection to the push server, where incoming packets from that server will wake up the device. This is not available for WiFi.