2013-11-27 3 views
10

Я делаю некоторые тесты, используя оценочные маяки и регионы.startMonitoringForRegion не срабатывает didEnterRegion и didExitRegion

Чтение документации по мере того, как я запускаю мониторинг региона. Я собираюсь рассказать моему делегату, что определенный регион контролируется, однако didEnterRegion и didExitRegion никогда не запускаются.

Мои делегируют пожары:

-(void)beaconManager:(ESTBeaconManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(ESTBeaconRegion *)region 

и

- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region 

Я не проверял, если ошибка происходит в locationManager:didFailWithError:

На данный момент я использую state вручную запустить два частных метода, которые работают как didEnter и didExit - в этом Я также могу следить за регионом, но я не понял почему locationManager:didEnterRegion: и locationManager:didExitRegion: никогда не называются.

Кто-то сталкивается с таким же поведением?

+0

Вы ожидаете didEnter/ExitRegion: стрелять, когда изменяется текущий диапазон маяков (т. Е. Близко к немедленному)? Если это так, то по дизайну. –

+0

Привет, Эрик, я ожидал, что когда я вхожу/выхожу из региона и не основанный на близости, я ожидаю, что был включен/ExitRegion. –

+0

Оказывая ту же проблему, как вы ее разрешили? –

ответ

0

Это должно сработать. Я хотел бы видеть остальную часть вашего кода, которая устанавливает мониторинг, и я бы поставил инструкции NSLog в ваш didEnterRegion didExitRegion и didDetermineState (также регистрирует значение состояния).

Возможно, что iOS думает, что не происходит переходов региона - что вы всегда «находитесь» в регионе, и поэтому переход не происходит. Переходы могут занять до 15 минут в фоновом режиме (хотя, если вы находитесь на переднем плане, оно должно быть в пределах 4 секунд для «выхода» и 1 сек для «входа»). http://developer.radiusnetworks.com/2013/11/13/ibeacon-monitoring-in-the-background-and-foreground.html

Вы можете принудительно обратный вызов области ввода/вывода, установив region.notifyEntryStateOnDisplay=YES; на ваш контролируемый регион, затем нажмите кнопку плеча. Это должно заставить отслеживать обратный вызов. Если вы сделаете это и не увидите заявления журнала, которые я предложил добавить выше, я был бы очень удивлен.

+0

Привет, Дэвид, я уже установил region.notifyEntryStateOnDisplay = YES; однако, вы заставили меня думать одно. В случае, если я уже в регион, и я запускаю свое приложение, у меня был выпущен EnErterRegion? Внутри locationManager: didDetermineState: forRegion: я могу проверить состояние == CLRegionStateInside/CLRegionStateOutside, также, если я останусь в реактиве, поэтому я ожидал, что методы ввода/выхода будут срабатывать одинаково. Вероятно, уже работает, но я должен проверить свое приложение по-другому. –

+0

Mario, настройка region.notifyEntryStateOnDisplay = YES является специальной. Это * WILL * вызывает * дополнительный * вызов всех методов обратного вызова, когда пользователь пробуждает телефон. Это самый простой способ получить дополнительный обратный вызов, когда iOS не думает, что есть изменение состояния. Нет, вы не получите дополнительный обратный вызов при запуске приложения - если вы не сделаете вызов, чтобы остановить мониторинг своего региона (с тем же идентификатором), а затем начать заново. Успешный перезапуск даст вам дополнительный обратный вызов. – davidgyoung

+0

Eveything работает нормально. Я думаю, что есть немного отставания перед выходом/enterRegion fire. Мое устройство берет немного, прежде чем оно поймет, что я покидаю регион. –

5

Проверить, есть ли вопросы, которые касались моей проблемы: Включить фоновое обновление приложения в настройках вашего устройства (см. Снимок экрана ниже). Я отключил его как показатель экономии батареи. не работает, если это отключено.

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

iBeacon StartMonitoringForRegion Doesn’t Work


Background App Refresh

+0

Это сработало для меня. Не очевидно, что это так. –

0

Я попробовал почти все, и это не сработало. Затем я просто перезапустил свой iPhone ... и он начал работать. Невероятный. У меня была эта проблема с оценочными маяками.

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