We already have a Push API specification that supports arbitrary push server URLs and self-hosting. It's called the Web Push API, although it can be used for mobile push as well.
The only problem is that no one is using it.
A bit longer comment on it:
https://gist.github.com/indigane/70ed13d5287c2d18b3e8e5d4f0c...