I would like to know if it is possible to schedule background execution of an app. I'm trying to use region monitoring on my app but only on specific days and the only way I can see it being possible is by adding the regions when they are needed and remove them when they are not so for example I want to monitor a region on 3 May I would like my app to be lauched in the background on 2nd May in order to add the region to be added instead of being tracking it all the way from now to that day. Is there any way of doing that? Or any other way you can think of? I tought maybe local notifications might help but don't know exactly how.
It sounds like you're a location-based app. If you're a location based app, then you're allowed to get notifications of movements. Register for the most you will need, and when they don't apply to you, just exit. You can use the "significant location change" notification so that you don't get notifications dramatically more than you want (that basically gives you notifications when the cell tower changes). But by the sounds of it, you're going to want to get notifications often, and just ignore them.
There is no way to run at arbitrary times when the user has not requested it. If you're one of the approved background types (such as location), then you can get notifications based on that, and that's what you have to use. There is no "time-based" notification that will run your code without the user's involvement.