Swift 3 - всегда находить местоположение
У меня есть приложение, которое используется для отслеживания водителей фургонов. Мне нужно иметь возможность получать местоположение (x&y) каждые 30 секунд или около того. У меня есть метод и таймер, который позволяет мне сделать это.
Мне было интересно, как (если это вообще возможно) я могу заставить это работать независимо от того, активно приложение или нет?
2 ответа
Я недавно начал возиться с основным местоположением, поэтому мои знания не будут пуленепробиваемыми.
Если приложение все еще активно, но только в фоновом режиме, тогда, если вы установите allowsBackgroundLocationUpdates
в true
тогда вы будете получать обновления. Но это может привести к разряду аккумулятора, так может продолжаться до тех пор, пока он не разрядится.
Вы можете избежать постоянной проверки местоположения, установив: pausesLocationUpdatesAutomatically
в true
,
Однако, если вы установите его на true
затем, если ваш драйвер останавливается в таком месте слишком долго (я не знаю, что значит слишком долго), тогда приложение полностью остановится от отслеживания местоположения, пока вы снова не выведете приложение на передний план. Я говорю это на основании:
Важно! Для приложений, имеющих авторизацию в использовании, приостановка обновлений местоположения в фоновом режиме прекращает доступ к обновлениям местоположений, пока приложение не вернется на передний план и не сможет перезапустить службы определения местоположения. Если вы не хотите, чтобы обновления местоположений полностью прекращались, рассмотрите возможность отключения этого свойства и изменения точности определения местоположения на kCLLocationAccuracyThreeKilmeters, когда ваше приложение перемещается в фоновый режим. Это позволяет вам продолжать получать обновления информации о местоположении энергосберегающим способом.
Так что это немного сложно. Вы можете установить pausesLocationUpdatesAutomatically
правда, но если ваши бизнес-требования позволяют... сделать что-то вроде stopUpdatingLocation()
после 1 часа работы приложения в фоновом режиме, чтобы полностью остановить обновление местоположения.
Да, это возможно.
Если ваше приложение iOS должно сохранять местоположение, даже когда оно находится в фоновом режиме, используйте стандартную службу определения местоположения и укажите значение местоположения ключа UIBackgroundModes, чтобы продолжить работу в фоновом режиме и получать обновления местоположения. (В этой ситуации вам также следует убедиться, что для свойства pausesLocationUpdatesAutomatics менеджера местоположений установлено значение YES, чтобы сэкономить энергию.) Примерами приложений, которые могут нуждаться в таком обновлении местоположения, являются фитнес-приложения или пошаговые навигационные приложения.
Для получения дополнительной информации ознакомьтесь с Руководством по программированию местоположения и карт.