yeah this is what author hints at with "Push as a battery problem". Apps are limited by default in what they can do in the background due to this, so most apps are in a suspended state not making network calls when you are not using them. To avoid the app having to keep running this stuff is delegated to OS which tells the app, "hey I have a push for you wake up and handle it!" You can send pushes locally but because of the background limitation it is not practical for unpredictable events like messages coming in.
What you're describing seems reasonable, but it doesn't align with what I quoted, unless I'm missing something, which I very well could be.
Having apps sleep and a daemon wake them to handle notifications doesn't require all of the notifications coming from Apple.