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.