Я работаю над приложением для iOS 7, которое указывает набор из 5 регионов вдоль маршрута и отправляет уведомление при входе в регион или выходе из него.
Регионы имеют круглую форму с радиусом 1 км и не являются смежными, а между ними расстояние в несколько километров. Примерно так (O
— это круглая область, а -
— пространство между ними):
O----O---O-------O---O-----O---O
Я провел несколько тестов, покатавшись на своей машине, и все, кажется, работает правильно, за исключением одного момента. Вызов didExitRegion
не происходит, когда я фактически покидаю регион, а вызывается только тогда, когда я вхожу в другой регион. Журнал событий выглядит так:
2013-10-17 07:58:56 Entered region A
2013-10-17 08:10:05 Exited region A
2013-10-17 08:10:05 Entered region B
2013-10-17 08:26:15 Entered region C
2013-10-17 08:26:15 Exited region B
2013-10-17 08:51:52 Exited region C
2013-10-17 08:51:52 Entered region D
2013-10-17 09:19:04 Entered region E
2013-10-17 09:19:04 Exited region D
Обратите внимание, что все события выхода происходят в то же время, что и событие входа для следующего региона.
Я перечитал документацию API и заметил комментарий Only boundary crossings generate an event.
, но я думаю, что это все равно означает, что событие должно срабатывать прямо в момент выхода из региона.
Я использую CLLocationManager с точностью по умолчанию (kCLLocationAccuracyBest
) и вызываю startMonitoringForRegion
один раз для каждого региона, который я отслеживаю.
Кто-нибудь знает, следует ли ожидать поведения, которое я вижу, или я делаю что-то не так?