There are really almost no need to run app in the background or at least constantly send data without a reason (mostly just tracking).
UPD: When deciding how to build something i have one small trick: first ask question about who can make better decision about something?
For example? Who is more capable to make decision about battery usage, about tweaking core performance, etc? It is obviously kernel or silicone itself. App will never have required information to build perfect performant app for every device. This just means that you have to build a kernel by yourself and even more: common kernel for every phone.
Aren't battery stats not enough for you? If your app uses too much battery, you can stop using it. Or you prefer some other people to make this decision for you?
I have built several push services for my previous projects it always sooo hard to implement right. iOS for example, uses 25+ different parameters to optimize push delivery depending on your app usage, on how you are using your phone and so on.
Good luck to build this as "third party" and keep everything private.