CLBeaconRegion не вызывает didEnterRegion от завершения

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

Тем не менее, из того, что я прочитал и перенести из CLRegionЯ понимаю, что это должно быть возможно ударить locationManager:didEnterRegion: после того, как заявка прекращена.

Я настроил мой CLBeaconRegion как это:

beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:SERVICE_UUID]
                                                       major:0
                                                       minor:0
                                                  identifier:BEACON_ID];
[beaconRegion setNotifyOnEntry:YES];
[beaconRegion setNotifyOnExit:YES];
[beaconRegion setNotifyEntryStateOnDisplay:YES];

Но я не могу вызвать CLLocationManagerделегат от прекращения. Я покинул регион (подтверждено уведомлением), прошел дальше от маяка, подождал 30 секунд, затем вернулся к маяку, но он не вызывает делегата во время завершения (отлично работает в фоновом и переднем плане)).

Должно ли это работать от прекращения? Я что-то пропустил? Любая помощь будет отличной.

4 ответа

Я полагаю, что когда вы находитесь в фоновом режиме или не работаете, он вызывает locationManager:didDetermineState:forRegion: вместо locationManager:didEnterRegion: и только в том случае, если для notifyEntryStateOnDisplay установлено значение TRUE.

РЕДАКТИРОВАТЬ: Нижеследующее больше не верно с 7.1. Вы по-прежнему можете получать уведомления, даже когда приложение закрыто

Поведение приложений, удаляемых в переключателе приложений, теперь имеет эффект, который вы описываете в iOS 7.

Пользователи, которые удаляют ваше приложение из коммутатора, приняли решение не запускать ваше приложение в фоновом режиме. Таким образом, мониторинг региона не будет повторно открывать ваше приложение.

Посетите сессию "Что нового в многозадачности" WWDC 2013 для получения дополнительной информации.

Это ожидаемое поведение в iOS 7. Однако это поведение было изменено в iOS 7.1. iOS 7.1 возвращает делегатские вызовы обратно к поведению до iOS 7.

Я задокументировал это поведение в своем блоге.

http://www.simplymadeapps.com/blog/2014/03/7-1-brings-back-geofence-behavior/

Да уж,

 Same behaviour is being noticed .Sometimes even while calling setNotifyEntryStateOnDisplay, didEnterRegion not called even when in foreground.
Другие вопросы по тегам