В iOS можно предположительно использовать метод startMonitoringForRegion:
CLLocationManager
для регистрации делегата для ответа на перемещение устройства в определенный географический регион, даже если приложение не запущено. Из справочника по классу CLLocationManager:
В iOS регионы, которые вы регистрируете в диспетчере местоположений, сохраняются между запусками вашего приложения. Если пересечение регионов происходит, когда ваше приложение для iOS не запущено, система автоматически пробуждает его (или перезапускает) в фоновом режиме, чтобы оно могло обработать событие. При повторном запуске все регионы, которые вы настроили ранее, становятся доступными в свойстве monitorRegions любых созданных вами объектов диспетчера местоположений.
Я предполагаю, что если приложение будет перезапущено, iOS на самом деле не выведет его на передний план. Я не смог найти хороших примеров, иллюстрирующих, где startMonitoringForRegion
вписывается в общее приложение, поэтому мои вопросы таковы:
- Нужно ли регистрировать делегата для
startMonitoringForRegion
откуда-то конкретно? Я предполагаю, что его нельзя вставить в контроллер представления, если мы запускаем приложение, не выводя его на передний план. Может ли кто-нибудь привести пример с некоторым контекстом вокруг него? - Если мы решим, что действительно хотим вывести приложение на передний план в результате входа в регион, как мы это сделаем?
- Когда
startMonitoringForRegion
регистрируется в ОС и когда не регистрируется? Должен ли пользователь запускать приложение хотя бы один раз (даже если оно уже было убито) для первоначальной регистрации? А если пользователь выключит устройство? Будет ли зарегистрирован наш обработчик при следующем включении устройства, или пользователю придется запускать приложение хотя бы еще раз?