Ответ 1
В соответствии с Apple Documentation в разделе "Использование регионов для мониторинга границ":
В iOS регионы, которые вы регистрируете с помощью менеджера местоположений, сохраняются между запусками вашего приложения. Если происходит пересечение области пока ваше приложение iOS не запущено, система автоматически разбудит его (или возобновляет его) в фоновом режиме, чтобы он мог обрабатывать событие. При повторном запуске все регионы, которые вы настроили ранее доступны в контролируемой собственности Ragions любого местоположения создаваемые объекты-создатели.
Итак, ваше приложение будет разбужено (или перезапущено!), когда местоположение системы обнаружит, что вы ввели/вышли (в зависимости от вашей установки) желаемый регион, так что это даже если ваше приложение не работает, конечно. Вам просто нужно правильно обработать его в делетете приложения, когда приложение перезагрузится, вы получите ключ UIApplicationLaunchOptionsLocationKey
в словаре параметров. Подробнее см. Ссылку на документацию ниже.
Помните, что метод -startMonitoringForRegion:desiredAccuracy:
устарел в iOS 6, поэтому его не следует использовать. Вместо этого используйте -startMonitoringForRegion
.
Чтобы узнать, как обращаться, когда ваше приложение перезапускается после события местоположения, см. документацию здесь, эта информация, как вы увидите, находится в обсуждении устаревшего метода но он все равно должен быть релевантным, я считаю, что Apple забыла перенести эту информацию на новый метод, когда они устарели старым. Я подал им об этом ошибку.
UPDATE
Apple обновила документацию CLLocationManager после моего отчета об ошибке. Документация теперь указывает, для каких типов мониторинга местоположения приложение запускается или не запускается после его завершения. См. Использование служб местоположения в фоновом режиме