Would I be right in saying that when a user exits a region I should call:
[beaconManager stopRangingBeaconsInRegion:region];
and then start it again when they enter a region.
I’m under the impression that the monitoringForRegion will always be monitoring for regions in the background even if the person is 500 miles away?
Yes. The app can be always monitoring for regions in range, even if it is running in background or is shut down entirely, but has relevant permissions for Location Services granted. Ranging is possible only in a specific region.
Yes, monitoring is a constant process, but it’s still super energy efficient compared to e.g. enabling and disabling beacon monitoring based on a GPS geofence.
Ranging is a tad more taxing when it comes to the battery life (still very efficient though), but ranging only works when the app is actively in the foreground, and then it’s just a tiny fraction of what e.g. the screen consumes.
All in all, I wouldn’t worry too much about the battery life optimizations until much later in the development cycle. It’s almost like the old software engineering mantra: “1) make it work, 2) make it right, 3) make it fast”. “3b) make it energy efficient”
Okay, so essentially there’s not much point in turning off ranging unless the user intends to have their iPhone not go to sleep and have your app open all the time…good to know, thanks.