There has been lots of confusion about how Beacon monitoring and ranging work in the background on iOS. In general ranging only works in the foreground, but monitoring updates can happen in the background. There are two ways to configure background monitoring, and even when done properly updates can take a long time to come. Because these delays, some people mistakenly believe that monitoring in the background doesn’t work.
##Summary
The tables below summarizes whether you can get monitoring updates under various conditions, and how long it might take to get them.
When the app is in the foreground:
Condition | Max time to detect a region change |
---|---|
App ranging | 1 second |
App not ranging | up to 15 minutes |
When the app is not in the foreground:
Condition | Max time to detect a region change |
---|---|
Phone awakened, notifyEntryStateOnDisplay=YES | 1 second |
Phone awakened, notifyEntryStateOnDisplay=NO | NEVER |
UIBackgroundModes=location ON | up to 15 minutes |
UIBackgroundModes=location OFF | up to 15 minutes |
Note: “Phone awakened” means pressing either the shoulder button or the home button when the phone display was off. The detection times, in this case, reflect the time from when the screen turns on.
How to maximize beacon responsiveness
The above tables show that two things are very important to maximizing the frequency of beacon monitoring updates:
Continue reading this blog post on the Radius Networks website