Are clocks too unreliable or is there too much NAT because everybody's too lazy to implement IPv6 still?
Are clocks too unreliable or is there too much NAT because everybody's too lazy to implement IPv6 still?
FCM (and Apple push) run a single keep-alive TCP connection and incoming packets will cause radio and application process wakeup only when necessary.
This change significantly improved Android battery life (remember that HN Apple lovers really loved to bash on Android battery life before this FCM push happened). The fact of the matter is that a lot of developers didn't care one bit about battery life and abused Android background services when there was no need to do so (e.g. schedule periodic wakeups to check for a preset alarm needed once 24 hours) and if we learned anything by this experiment is that you simply can't trust developers to respect users anymore.
But majorly - it makes little business sense for Google to support that. It can only make Android look worse for little gain to them.
For one it is hard to measure, and many devs don't really know/care about it.
FCM is a boon in this regard. So are the restrictions that Android is adding to background processing. They are technically not that necessary ... except that you can't trust any app not to abuse it, so the new model is so much better.
Also, thanks Google for finally forcing apps to target the last version or so of this OS so they have to adopt all these new optimizations, whether they want to or not.
IPv6 would solve a single push service, but with every app deploying its own push service, you get back to the tragedy of the commons problems.
As it has been seen again and again on Android, you absolutely cannot trust app developers to be good citizens and stop running services on background that quickly wipe your battery (not to mention even more shady stuff), and no way you'll be able to trust developers with push services that don't do the same.
If you need proof, just look at China, it is the wild west of push services.
That's your problem, if the radio is off and you're using UDP, the message will simply be lost. You can leave the radio on permanently, but you'll kill the battery.