iBeacon: не удалось обнаружить вещателя — прерывистый

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

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

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

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


person jason    schedule 27.01.2014    source источник


Ответы (2)


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

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

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

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

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

[self.locationManager startRangingBeaconsInRegion:self.beaconRegion];

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

person James Frost    schedule 27.01.2014
comment
Прохладно! Спасибо и за объяснение, дружище. Теперь он работает нормально! - person jason; 27.01.2014
comment
отличный ответ. +1 для вас. :) - person Mani; 27.01.2014

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

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

Это решит проблему.

person rishi    schedule 27.01.2014