Also just want to point out that push means your device is running a service, a network listener. That is something that is only a hard problem because of NAT and creating privacy protecting cache protocols. If the device is connected, it really should be able to wait for inbound messages. But the privacy problem means you need a relay network to buffer you from the sender, so they aren't seeing your network location.