A developer can't just set a background fetch interval in iOS7 and have the app fetch at that interval (i.e. fetch every hour). Rather you can set your app to background fetch, and when it fetches is at the mercy of the OS.
The OS tries to be smart about it, lumping fetches together when it can, and noticing things like when the user opens the app typically.
So say the user launches GREAT WEATHER app app normally at 8 am, the OS notices and performs a background fetch a few minutes before (for example).
There is a new settings screen in iOS7 called "Background App Refresh" (under General) which allows users to disable app refreshes altogether or to turn off the ability for specific apps
I understand iOS7 will govern abuse/excessive background fetching. But seems unfortunate it can't cater for legitimate scheduled background fetching - e.g. updating all my podcasts every day at 8am. In this case my phone would be plugged in anyway, so the battery concern is moot - there are other cases where I'd accept a substantial battery drain to run a process I've approved.
From other comments it sounds like iOS might figure out I like to listen to podcasts en route to work and learn to pre-fetch. But I don't want to rely on it noticing this or wait for it to learn.
I have a mix of Android and iOS and it's for this use case that Android handles all my podcasts.
It's mentioned elsewhere in this thread, but I believe after you posted. Basically, the apps don't control when they can do their background fetching. It's up to the OS, which uses your usage patterns to determine how often backgrounding can occur. So, beyond the setting where you can disable this functionality, the intent is you use your apps like normal and it adjusts itself to your patterns.
Is there any way for users to manage this behavior? If not it seems ripe for abuse or just plain laziness.