Проблема, которую вы видите, связана с тем, что приложение-получатель запускает «диапазон» для маяков, если обнаруживает, что вы ввели регион. Если вы сначала запустите вещательную компанию, вы уже уже внутри области маяка, поэтому ваше приложение может не начинать колебаться. Это предложение в статье является ключом:
Запустите приложение приемника и несите его подальше от радиовещательного маяка, а затем идите к нему, чтобы имитировать вход в регион.
Мониторинг для маяка означает, что ваше приложение будет получать уведомления только тогда, когда вы ввести или выход в регионе вы определили. Радиус этой области может составлять до ~ 50 м, поэтому, если вы просто сидите рядом с приемником, вы не должны запускать одно из этих событий, если вы не включите и снова включите приемник. Мониторинг может выполняться, пока приложение работает в фоновом режиме или на переднем плане.
Ранжирование для маяков в регионе означает, что приложение будет уведомлено один раз в секунду со списком всех маяков, что устройство может видеть в указанной области (заказывается по расстоянию). Ранжирование вызовет метод locationManager:didRangeBeacons:inRegion:
вашего делегата CLLocationManager
. Список маяков будет постоянно обновляться, когда вы перемещаетесь внутри/за пределами региона, и ваше расстояние до маяков меняется. Ранжирование должно выполняться, пока ваше приложение находится на переднем плане.
Если вы хотите, чтобы приложение, чтобы непрерывно слушать маяков, попробуйте позвонить
[self.locationManager startRangingBeaconsInRegion:self.beaconRegion];
в вашем viewDidLoad:
, а в методе didEnterRegion:
.
Прохладный! Спасибо за объяснение, а также помощник. Теперь он отлично работает! – jason
превосходный ответ. +1 для вас. :) – Mani