I am not able to post my reply in our last thread due to estimote forum guidelines so I am continue here…
Just checked, the empirical limit as of iOS 9 seems to be 3 minutes , but you should use the backgroundTimeRemaining property to know for sure how much time your app has in the background before iOS force-terminates it. You can use all this time in the background to perform ranging.
Imagine for example that you enter a venue, and monitoring triggers an enter event. iOS wakes your app into the background to handle the event, but only gives it a few seconds to do that. The app can then start a background task to extend this time, and start ranging to determine whether the user is moving further into the venue (getting closer to the beacon), or just peeked inside it and immediately leaves. Once you establish that, perform an appropriate action and finish the background task, so that iOS puts the app back to sleep and doesn’t forcefully terminate it.
If short-term background ranging is not enough, you need to find a way to keep your app running in the background longer by using Background Modes. However, keep in mind that the use of Background Modes is heavily regulated by Apple!