I am describing my usecase and solution approach I am taking. It will be great if experts can validate and help.
Usecase: I am going to attach beacons to hundreds of product in a big mall. Products can be moving. I am creating an iOS consumer app. Consumer will move in a mall and if he spends significant time (around 5-10 seconds) around a product (near beacon), I will want it to be captured and then push promotional messages to consumer lately. Consumer can have app in terminated mode or in a running mode (background or foreground)
- Using nearable stickers
- All stickers will have the same UUID. They will differ in major and minor number and based on major/minor, I will indentify the product.
- Stickers will transmit iBeacon packets (as otherwise I believe I will not be able to monitor a region which will be an issue when app is terminated)
- I will be monitoring a region identified by my UUID.
- Once I move into a region, my app will be launched in a background mode for around 10 seconds. I will start ranging and get beacon major/minor IDs.
- Once I move out of a region, I will stop ranging.
- My sticker settings:
a. packet type = iBeacon (to manage fleet of hundreds of beacon and support monitoring them while app is terminated)
b. broadcast internal = 100mS (lowest to make sure ranging gives result sooner than later)
c. power transmission = -20dB (to make sure regions are smaller and I get more entry/exits to start ranging often)
Questions and Issues:
- Is this the best and only approach? Is there any alternate approach/settings I can use?
- Once I made above settings, I could no longer detect stickers. Not even in iOS application of Estimote in foreground.
- Earlier I had my power set as default 0dB but that means huge region and that did not give me enough call backs for entering and exiting regions => I thought of narrowing a region by reducing power. Is this correct?
- Does ranging really work in initiated background mode (invoked from termination) and will I really get major/minor? When my power was 0dB, I got entry into a region callback, but ranging gave no beacon (count was always 0).
Will really appreciate your comments on above solution and questions.