Подтвердить что ты не робот

IOS - CoreLocation и geofencing при закрытии приложения

Я читал много руководств о геообработке моего приложения iOS (т.е. здесь), но никто не упоминает, поддерживает ли iOS любые данные местоположения приложения когда приложение закрыто.

Например, я понимаю, что когда приложение находится в фоновом режиме, эти службы будут по-прежнему сохраняться (если правильно закодировано), но как насчет того, когда пользователь удваивает кнопку дома и закрывает приложение? Можно ли получить данные о местоположении?

4b9b3361

Ответ 1

В соответствии с Apple Documentation в разделе "Использование регионов для мониторинга границ":

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

Итак, ваше приложение будет разбужено (или перезапущено!), когда местоположение системы обнаружит, что вы ввели/вышли (в зависимости от вашей установки) желаемый регион, так что это даже если ваше приложение не работает, конечно. Вам просто нужно правильно обработать его в делетете приложения, когда приложение перезагрузится, вы получите ключ UIApplicationLaunchOptionsLocationKey в словаре параметров. Подробнее см. Ссылку на документацию ниже.

Помните, что метод -startMonitoringForRegion:desiredAccuracy: устарел в iOS 6, поэтому его не следует использовать. Вместо этого используйте -startMonitoringForRegion.

Чтобы узнать, как обращаться, когда ваше приложение перезапускается после события местоположения, см. документацию здесь, эта информация, как вы увидите, находится в обсуждении устаревшего метода но он все равно должен быть релевантным, я считаю, что Apple забыла перенести эту информацию на новый метод, когда они устарели старым. Я подал им об этом ошибку.

UPDATE

Apple обновила документацию CLLocationManager после моего отчета об ошибке. Документация теперь указывает, для каких типов мониторинга местоположения приложение запускается или не запускается после его завершения. См. Использование служб местоположения в фоновом режиме

Ответ 2

Некоторые формы обновления местоположения требуют, чтобы приложение работало в фоновом режиме, а некоторые - нет. Если вам нужны "постоянные" обновления местоположения, приложение должно работать в фоновом режиме. Если вам нужны только существенные изменения (и я думаю, что это работает и для мониторинга региона, хотя документы не настолько явны), тогда приложение будет перезапущено, если оно будет прекращено:

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

(из Документы CLLocationManager)

Ответ 3

Если вы используете возможности мониторинга региона, вы можете как-то возобновить свое приложение, даже если оно закрыто, как правило, путем создания локального уведомления, таким образом, пользователь может сдавать экзамен в приложении и выполнять определенную задачу, наблюдая за словарями параметров -applicationDidFinishLaunchingWithOptions: