2015-04-13 3 views
0

Согласно iOS API CLLocationManager startmonitoringsignificantlocationchanges будет информировать мое приложение, когда есть значительные изменения, например. 500 mtrs или больше.iOS - Мониторинг региона, когда устройство/пользователь в новый город?

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

ПРИМЕЧАНИЕ: его не приложение для карты/навигации, поэтому я не хочу, чтобы мое приложение продолжало отслеживать данные о местоположении пользователя и в конце аккумулятора аккумулятора.

Пожалуйста, предложите какое-либо решение.

+0

Вы ограничены 64 регионами, поэтому вам нужно будет объединить как значительное изменение местоположения, так и мониторинг региона. В городе не строится сбор, вам придется строить это самостоятельно. Кроме того, вы не можете перенести приложение на передний план, вы ограничены локальным уведомлением. – rckoenes

ответ

0

Я думаю, что вам нужен метод класса CLLocationManager:

- (void)startMonitoringForRegion:(CLRegion *)region 

Параметры область
Область объекта, который определяет границу для наблюдения. Этот параметр не должен быть равен нулю. Обсуждение Вы должны вызвать этот метод один раз для каждого региона, который вы хотите контролировать. Если существующий регион с тем же идентификатором уже отслеживается приложением, старый регион заменяется новым. Области, которые вы добавляете с помощью этого метода, совместно используются всеми объектами менеджера местоположений в вашем приложении и сохраняются в свойстве monitoredRegions.

События региона доставляются в locationManager: didEnterRegion: и locationManager: didExitRegion: методы вашего делегата. Если есть ошибка, диспетчер местоположений вызывает вместо этого метод locationManager: monitoringDidFailForRegion: withError: method вашего делегата.

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

+0

Спасибо. Таким образом, имея ограничение в 20, приложение может уведомлять только о 20 городах. Также хотите подтвердить Что, если мое приложение закрыто, а locationManager: событие didEnterRegion доставляется в мое приложение? Приходит на передний план или просто я должен показать местное уведомление? – harshit2811

1

Он выполнит ваше заявление. (извините, что это не комментарий, но слишком длинный для комментариев).

Смотрите подробности ниже (от компании Apple документации)

Для начала мониторинга региона, настроить соответствующий объект региона и передать его в startMonitoringForRegion: метод вашего менеджера местонахождения. В iOS зарегистрированные регионы сохраняются между запусками вашего приложения. Если пересечение границы области происходит, когда приложение iOS не запущено, система автоматически разбудит его (или перезапустит) в фоновом режиме, чтобы обработать событие. В этом случае словарь параметров передается приложению: didFinishLaunchingWithOptions: метод вашего делегата приложения содержит ключ UIApplicationLaunchOptionsLocationKey, чтобы указать, что ваше приложение было запущено из-за события, связанного с местоположением. Во время перезапуска вы должны воссоздать свой объект менеджера местоположений и назначить делегата, способного обрабатывать события, связанные с регионом. После этого система отправит уведомление о регионе, для которого было запущено ваше приложение. Все регионы, настроенные ранее, становятся доступными в свойстве monitoredRegions любых создаваемых вами объектов менеджера местоположений.

+0

Спасибо Sfirite. Один вопрос здесь.После настройки объекта области и передачи его в startMonitoringForRegion:, должен ли пользователь всегда разрешать (сохранять ON) службы определения местоположения всегда для уведомления о пересечении границ? Что делать, если пользователь отключил уведомление о местоположении и пересек границу региона, а затем через несколько дней, если я снова запустил службу определения местоположения. Будет ли мое приложение уведомлено о том, что пользователь уже пересек границу по определенной дате и времени? – harshit2811

+0

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

+0

Из моего опыта около года назад эта функциональность нестабильна. Конечно, возможно, что я сделал что-то неправильно (у нас есть очень специфический алгоритм) – sfirite

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