I just found out that I can only monitor 20 beacons at one time. What Im trying to do is, I have one mall app, and in one mall, I have to install one beacon in front of each shop. There are more than 20 shops in one mall.
I just need it to call didenter/didexit region in background. But if I load all beacons, maybe 100, it will not call all didenter/didexit region because of the 20 limit.
Is it possible to load 20 beacons in one area, and if the user walks into a different area, the app will load another 20 beacons in background mode ?
It's possible to monitor more than 20 beacons. All you have to do is define regions in a way that they cover more beacons.
For example one region could be defined only by UUID (same for many beacons) or UUID and major unique for another group of beacons.
the one you are referring is for foreground and not background right ?
what I want is the user have the app in background mode, but still getting the push notification if nearby beacon is detected. meaning, app can load all 100 beacons, but loads 20 first, user walks in another zone, app in background will load another 20 uuids, and so on.
With creative use of regions you can monitor more than 20 beacons at a time. What you need to do is have multiple beacons per region, and then when your locationManager:didEnterRegion callback is run, check to see which beacon within the region was triggered (with ranging?). Arranging the beacons & regions then becomes a least colours graph problem (see: http://en.wikipedia.org/wiki/Graph_coloring)
You get given ~10 seconds processing time in the background each time didEnterRegion is called, but this might not be enough for ranging, so you can request up to another 3 minutes using UIApplication beginBackgroundTaskWithExpirationHandler - you can then use this time to do some ranging and work out which beacon you are closest to within the region you entered.