What are region Monitoring and Ranging?

Follow

Apps detect and interact with beacons in two ways:

  • Monitoring: actions triggered on entering/exiting region’s range; works no matter whether the app is running, suspended, or killed (if the app's not running when an enter/exit even comes, iOS will launch it into the background for a few seconds to handle the event)
  • Ranging: actions triggered based on proximity to a beacon; works only when the app is running (e.g., it's displayed on screen, or running in the background in response to a monitoring event, etc.)

It’s important to remember that Monitoring allows you to scan for beacon regions, while Ranging is for interacting with individual beacons.

To learn more about beacon regions, read:

What is a beacon region?

Monitoring

Monitoring a region enables your app to know when a device enters or exits the range of beacons defined by the region. Imagine a museum with an audio guide application and beacons installed by the two entrances. The app is monitoring for a region encompassing both beacons (think: ‘all entrance beacons’ region) and is notified whenever the user enters the museum. Then it launches a notification, reminding users about the audio guide feature.

And now the best part: all of this can happen even if the user has their phone in their pocket, locked! Region Monitoring works even when the application is not running—all that is needed is the app installed on the device.

Monitoring also has several limitations:

  • It requires the user to grant the app permission to "Access Your Location Even When You Are Not Using the App". You can read about handling Location Services permission elsewhere in our Knowledge Base.
  • It's not as responsive as ranging. Whereas ranging reports changes in beacons detected in range within seconds, monitoring's responsiveness varies as a result of using low-power scanning. If the device is currently or was recently in use, and is actively using WiFi/Bluetooth communication, the events are near instantaneous. In other scenarios, there might be a delay of up to a few minutes.
  • Exit event is always delayed at least 30 seconds, to avoid false positives.

Many apps use iBeacon protocol for monitoring. It has two more limitations:

  • iOS limits the number of regions an app can be monitoring at once to 20. No worries, the number of beacons in a single region is almost unlimited (strictly speaking, it's 4,294,836,225 beacons... quite a lot, right?)
  • It only recognizes enter/exit events and provides no information about which exact beacon triggered the event (only which region did), and no proximity estimations. (You can, however, use the time iOS grants your app to handle the enter/exit event to run ranging for a few seconds, and learn both which exact beacons are in range, and what's their proximity.)

That's why we recommend Estimote Monitoring as the most reliable protocol for triggering enter/exit events. Estimote Monitoring allows for creating an unlimited number of regions, even if they consist of only one beacon each. You can then set triggers for each and perform specific actions depending on where the user and his/her device is. So if you have a big deployment, say, in the airport, you would be able to display specific notifications for each check-in counter, security check and a gate (and you can even add a few more for duty-free shops ;-)). Beacons can be marked with tags, making it really easy to configure e.g. alerts for all check-ins or for only gates A20 to A24. Options are unlimited and everything can be configured with our SDK.

Ranging

While Monitoring enables you to detect movement in-and-out of range of the beacons, Ranging is more granular. It returns a list of beacons in range, together with an estimated proximity to each of them.

Coming back to our museum example: imagine an "all beacons near the exhibits" region. The audio guide app can scan for all beacons in this region and then check which beacon is the closest. Since each beacon is associated with a particular exhibit, the app will play a description of an artwork relevant to the user’s context.

As Bluetooth Low Energy ranging depends on detecting radio signals, results will vary depending on the placement of Estimote beacons and whether a user's mobile device is in-hand, in a bag, or in a pocket. Clear line of sight between a mobile device and a beacon will yield better results so it is recommended that Estimote beacons not be hidden between shelves.

On iOS:

Ranging works only when the app is running, which most of the time means that the user is actively using the app. This also means that it only needs permission to "Access Your Location While You Use the App".

Note that there are certain scenarios on iOS when your app can be actively running in the background—ranging will also work in these (limited) scenarios. For more details, refer to the Is it possible to use beacon ranging in the background? article.

 

Was this article helpful?
7 out of 7 found this helpful

23 Comment(s)

  • Avatar
    Thomas Breitbach

    Hi, thank you for clearing up!

    Is it possible to change the callback interval of beaconManager:didRangeBeacons:inRegion from 1 sec to x?

    regards

  • Avatar
    Wojtek Borowicz

    Hi Thomas,

    You can edit only the advertising interval of the beacons. On iOS, it's not possible to update the scanning interval on the device (you can do that on Android).

    Cheers.

  • Avatar
    Oana Capatana

    Hello,
    Thank you for making this more clear.
    I have a question that maybe you would know the answer to. I am working on an iOS app and I would like to send a notification to the user, even if the app is closed, when he enters a region. The problem I have is that all the beacons in the region have different minors and majors and I cannot set these on the region. So, when didDetermineState is called, the region minor and major are 0. There can be more than one region (for example, 2 museums) and I need to send a custom message depending on a each region. Do you think it is possible to do this?

    Thank you,
    Oana

  • Avatar
    Wojtek Borowicz

    Hi Oana,

    You can define a region in such a way to include both Major and Minor values alongside UUID (initWithProximityUUID:major:minor:identifier:). Or only Major and UUID (initWithProximityUUID:major:identifier:). It's described in detail in our documentation: http://estimote.github.io/iOS-SDK/Classes/ESTBeaconRegion.html

    You might also want to read this article about how regions work: https://community.estimote.com/hc/en-us/articles/203776266-What-is-a-beacon-region-

    Cheers.

  • Avatar
    Oana Capatana

    Thank you for your quick response.
    I understand.. So there is no way to get the beacon from a region (the beacon that triggered the notification) while the app is closed?
    I read somewhere that the app is launched in the background to be able to send the notification. Is it killed right after? Because I cannot see it as a background app on my iPhone.
    Defining a major and minor for the region is not the preferable option for me, because I already have the beacons and that means I would have to configure them all with these values.

    Thank you,
    Oana

  • Avatar
    r j

    i am uncertain of "beacon region". what is the expected proximity to the beacons when you are "in a region" defined by major/minor/uid values?

    like, what would be my distance from a beacon if i defined a region as a single beacon?

  • Avatar
    Wojtek Borowicz

    Hi,

    Region boundaries are defined by the range of all beacons in this region. So if your region is a single beacon, the region is basically this beacon's range. You can adjust range by manipulating 'broadcasting power' settings of a beacon. The greater the power, the longer the range.

    Cheers.

  • Avatar
    r j

    thanks!

  • Avatar
    Jose Antonio

    Hello.

    Can you customize the distance of each region?

    I am interested in making an app that notifies me when I have been away a certain distance from the beacon.

    Thanks

  • Avatar
    Jacek Kurnik

    Hi Jose,

    You can receive notifications based on distance from a single beacon utilising ranging and proximity zones (mentioned above), however you cannot do it with a beacon region.

    Best,

  • Avatar
    Wojtek Borowicz

    Hi there,

    To add to what Jacek said, please remember that 'region' is a physical representation of the range of all beacons included in this region (more on this here: https://community.estimote.com/hc/en-us/articles/203776266-What-is-a-beacon-region-). So while you cannot directly inlfuence the range of a region, you can adjust range of each beacon, by setting its broadcasting power to a different value.

    Cheers.

  • Avatar
    daniel zhou

    Hello!
    when we kill the App in android,can i program to let the beacon manger running in the background service?so when I kill the app,the monitoring service is still running in the backgroud and i will get notifications .

  • Avatar
    Wojtek Borowicz

    Hi there,

    If you kill the app entirely on Android, Estimote SDK will stop monitoring: the app has to be running in the background to be able to keep monitoring. We're currently working on a big update to the Android SDK though, so stay tuned :)

    Cheers.

  • Avatar
    zzzx60

    Hi Wojtek,

    Im a bit confused by monitoring within a region - I understand a region is made up of beacons that share the same UDID/Major/Minor - does this mean that if I place 100 beacons in 100 different countries with the same UDID/Major/Minor they are all still within the same region and any device that enters and exits their range is identified as the same space?

    Also when you say IOS can only monitor 20 regions ' at once' does this mean an app can only be set to monitor or range for 20 unique spaces or locations? I don't understand then how stadiums and the like offer beacon solutions that comprise hundreds of unique "regions/beacons" a one IOS app can engage with?

  • Avatar
    Jacek Kurnik

    @zzzx60

    You cannot set the same UUID,Major, Minor for multiple beacons. Each combination of those 3 must be unique regardless of the location.

    To define a region, please set a unique UUID or same UUID and unique Major for multiple beacons (the limit is 20 for any combination). The number of beacons a region consist of is unlimited. And yes, you can create the same region in several remote locations if you would like the users' smartphones to act in the same way in those places.

    When we say that iOS can monitor for 20 regions at once, we mean that it can be set to monitor for 20 regions only. It depends on how you define a unique location and whether you can replicate the region in some of them.

    Remember you can still range in the foreground for unlimited number of beacons.

    Cheers,

  • Avatar
    Wojtek Borowicz

    Hi,

    Please note that beacons cannot share all values. Each beacons needs a unique ID, so if they have the same UUID and Major, they need different Minor values. But yes, if you have a region defined by UUID + Major, and place beacons with those UUID + Major values in 100 different places, all of them will be parts of this region.

    Please remember that beacon region has nothing to do with geographical regions and physical spaces. A region can encompass as much space as you want to (stadium, shopping mall, a whole city) or as little as just a few inches.

    You can read about this in detail right here: https://community.estimote.com/hc/en-us/articles/203776266-What-is-a-beacon-region-

    Cheers.

  • Avatar
    zzzx60

    Thanks,

    So just to confirm, for example, if I have a two story house, and a beacon in every room. All the beacons on the first floor will make the smartphone act the same way, and all the beacons on second floor will make the smartphone act in a different way. For this scenario I can have the same UDID for all on first floor but a unique Major for each beacon, or same Major and UDID but different Minor for each, and then all beacons on the first floor will be in the same region right?

    In this scenario, If I was to then range in the foreground will I still see every beacon in each room even though there are only two regions, ono on each floor?

    If beacons can trigger an action on a smartphone upon entering and existing of the monitoring region - does this mean that for all 20 regions, no matter how many beacons you can only make a smartphone trigger 2 unique actions per region (entering & exiting) of the beacon/s range?

    Apologies for all the questions!

  • Avatar
    Wojtek Borowicz

    Hi,

    It depends on how you create the region. You can make it consist of all beacons with a specific UUID, all beacons with a specific combination of UUID and Major, or of a single beacons with a unique combination of UUID, Major, and Minor.

    As for monitoring: yes, it allows you to perform two actions: on exist and on enter. But you can also build your own logic, and for example trigger a notifications if someone stays for a regions for a specified period of time. You can also use ranging in the foreground to launch actions based on proximity to particular beacons.

    Cheers.

  • Avatar
    zzzx60

    Also can you change what the beacon identifies as near & far? In the diagram above 3 to 70m could be considered "far" & this is the same when I test distance on the Locate app, what if in your application 3m is too close to trigger the "far" action?

  • Avatar
    Ajay V

    The android version of the sdk provides the list of beacons on region enter while monitoring where as ios does not have the list of beacons in the region encountered. In ios, is there a way to determine while monitoring, on region enter, which are the beacons in range?

  • Avatar
    Wojtek Borowicz

    Hi Ajay,

    After you enter the region you can start Ranging. The SDK will return a list of all beacons in range. It's explained in more detailed here: http://developer.estimote.com/ibeacon/tutorial/part-3-ranging-beacons/

    Cheers.

  • Avatar
    CIDAT

    Hi,
    In the monitoring who making the monitoring, the app or beacon?. It's not clear for me. It's for this reason that is less "quick" than ranging?. Thanks.

    Cheers.

  • Avatar
    Igor Ganapolsky

    When you say ~" works no matter whether the app is running, suspended, or killed", you are talking about iOS only? Can you provide an explanation for this for Android.

Estimote is
hiring!