2014-01-27 3 views
1

Я наткнулся на этот урок (http://www.appcoda.com/ios7-programming-ibeacons-tutorial/) о iBeacon, который я нашел интересным. Я загрузил их исходный код и умею хорошо работать.iBeacon: Невозможно обнаружить вещатель - Intermittent

В любом случае, я заметил одну странную вещь. Бывают случаи, когда я запускаю вещательную станцию ​​сначала вместо приемника, приемник, похоже, не может обнаружить какой-либо маяк, но если я сначала запустил приемник, только тогда маяк можно обнаружить.

Я пробовал смотреть на другие мелочи, но iBeacon кажется новой технологией, и ссылки не могут быть найдены. Может ли кто-нибудь из вас, кто попал в руки, замарать в эту вещь iBeacon, пролил свет на эту неустойчивую проблему?

Ваша помощь очень ценится.

ответ

4

Проблема, которую вы видите, связана с тем, что приложение-получатель запускает «диапазон» для маяков, если обнаруживает, что вы ввели регион. Если вы сначала запустите вещательную компанию, вы уже уже внутри области маяка, поэтому ваше приложение может не начинать колебаться. Это предложение в статье является ключом:

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

Мониторинг для маяка означает, что ваше приложение будет получать уведомления только тогда, когда вы ввести или выход в регионе вы определили. Радиус этой области может составлять до ~ 50 м, поэтому, если вы просто сидите рядом с приемником, вы не должны запускать одно из этих событий, если вы не включите и снова включите приемник. Мониторинг может выполняться, пока приложение работает в фоновом режиме или на переднем плане.

Ранжирование для маяков в регионе означает, что приложение будет уведомлено один раз в секунду со списком всех маяков, что устройство может видеть в указанной области (заказывается по расстоянию). Ранжирование вызовет метод locationManager:didRangeBeacons:inRegion: вашего делегата CLLocationManager. Список маяков будет постоянно обновляться, когда вы перемещаетесь внутри/за пределами региона, и ваше расстояние до маяков меняется. Ранжирование должно выполняться, пока ваше приложение находится на переднем плане.

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

[self.locationManager startRangingBeaconsInRegion:self.beaconRegion]; 

в вашем viewDidLoad:, а в методе didEnterRegion:.

+0

Прохладный! Спасибо за объяснение, а также помощник. Теперь он отлично работает! – jason

+1

превосходный ответ. +1 для вас. :) – Mani

1

Его доступ к имеющимся методам использования текущего местоположения. Добавьте этот метод также -

- (void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region { 
     [self.locationManager startRangingBeaconsInRegion:self.beaconRegion]; 
} 

Это устранит проблему.

+0

Спасибо, риши! Это тоже работает :) – jason

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