-->

iBeacon: Get advertisement package faster

2019-03-05 07:55发布

问题:

In my app I get the information of the beacons with CoreLocation and and the LocationManager. I've set the advertising interval of the beacons to 200ms. Is it possible to call the didRangeBeacons delegate method faster, so that i get the values of the advertising package according to the advertising interval of the beacon?

回答1:

No, you cannot alter the frequency of the didRangeBeacons:inRegion callback, which is 1 Hz regardless of the beacon advertising frequency.

You can get callbacks for each beacon advertisement (every 200 ms in your case) using CoreBluetooth APIs, but there are a couple of restrictions:

  1. It will not work with iBeacon transmissions as iOS blocks access to iBeacon advertisement data in CoreBluetooth. You can use AltBeacons, which are iBeacon compatible, and get the more frequent updates with those. You can buy beacons that send out both iBeacon and AltBeacon transmissions.

  2. It will only work in the foreground. You cannot get Bluetooth LE manufacturer advertisements in the background on iOS.

Full disclosure: I am Chief Engineer at Radius Networks which sponsors the open source AltBeacon standard.