In iOS, regions (
CLRegion) associated with your app are tracked all the time, including when the app isn't running. If a region boundary is crossed while an app isn't running, the app is relaunched in the background to handle the event.
Similarly, if the app is suspended when the event occurs, it's woken up and given a short amount of time (around 10 seconds) to handle the event.
When necessary, an app can request more background execution time using the
beginBackgroundTaskWithExpirationHandler: method of the
This means that your app can perform a few actions such as showing a local notification or sending an HTTP request (or both), but it can't really perform running actions such as ranging beacons any longer; this is because once your app goes back to sleep, this function is stopped being called.
You can perform longer running actions in the background by turning on the background modes in the Capabilities tab of the application...