2013-11-19 3 views
0

Сейчас я пытаюсь использовать iBeacons.
У меня есть 2 устройства, которые я использую в качестве маяков и 1 устройство для настройки диапазона.Цель C - iBeacon locationManager: didRangeBeacons: inRegion:

Когда я реализовал этот метод, вызовите locationManager: didRangeBeacons: inRegion :, в документации говорится, что «didRangeBeacons» принимает массив маяков в непосредственной близости.

Однако я заметил, что locationManager: didRangeBeacons: inRegion: вызывается дважды каждым отдельным маяком. Должно ли это так вести себя?

Спасибо,
Tee

ответ

0

Вы правы, что locationManager:didRangeBeacons:inRegion вызывается несколько раз - когда близость маяки изменений. Мне показалось, что я читал, что это обычно один раз в секунду (и мое тестирование, похоже, согласуется с этим), но я не могу найти ссылку на него в данный момент.

Вы можете, конечно, решить, какое действие вы хотите предпринять, когда метод вызван (или даже вообще не предпринимать никаких действий). Вы также можете позвонить по номеру stopRangingBeaconsInRegion:, если хотите только один раз.

2

Вы должны получить один вызов в секунду locationManager:didRangeBeacons:inRegion для каждогоCLBeaconRegion, что вы в диапазоне, и этот обратный вызов включает в себя массив CLBeacon объектов, которые видны внутри этого региона.

Итак, если вы настроили два объекта CLBeaconRegion и используете оба из них, вам нужно два обратных вызова в секунду, каждый с одним маяком в своем массиве.

Если вы установили один CLBeaconRegion для диапазона, который соответствует обоим маякам, тогда вы должны получить только один обратный вызов в секунду, и он должен содержать два маяка в своем массиве.

Смежные вопросы