Summarizing the journey of IOS team with IBeacons.

IBeacon is Bluetooth low-energy (BLE) wireless technology to create a different way of providing location-based information and services to iPhones and other iOS devices.Going through iBeacon docs,

The team found that it provides methods and the framework(Core Location) to perform the tasks. All you need to know what each method is capable to do.

First of all we start monitoring and ranging in our application. Once your device comes in range of a beacon,it will return the information about it in one of its method.Its here, where you parse the information it gives and fetch its corresponding data. But if no beacons are around then we stop ranging and only monitoring is keeps happening.

There were some challenges that the team faced to integrate this concept in the application. One of them was that initially it used to do ranging all the time, whether you are in range of beacon or not and the application needed to be in foreground all the time to receive all the beacons, which affected the device battery life. But thanks ios 7.1, which came with concept of monitoring. Now you can do monitoring continuously even when your device is in background and when you are in range of beacon it will tell you and then you can start your ranging.
The other difficulty was, when you get array of beacons then you need only specific region beacons. For this, the way is to stop all ranged regions and add specific ranged objects. Now you will get arrays of those beacons, which you want.

One point to take care is when you are in range of a beacons, then its corresponding delegate method is called every second. Whatever you write inside it will be executed every second. So be careful not to write unnecessary code in this method,which can affect your application performance.