Swift 3 - всегда находить местоположение

У меня есть приложение, которое используется для отслеживания водителей фургонов. Мне нужно иметь возможность получать местоположение (x&y) каждые 30 секунд или около того. У меня есть метод и таймер, который позволяет мне сделать это.

Мне было интересно, как (если это вообще возможно) я могу заставить это работать независимо от того, активно приложение или нет?

2 ответа

Я недавно начал возиться с основным местоположением, поэтому мои знания не будут пуленепробиваемыми.

Если приложение все еще активно, но только в фоновом режиме, тогда, если вы установите allowsBackgroundLocationUpdates в true тогда вы будете получать обновления. Но это может привести к разряду аккумулятора, так может продолжаться до тех пор, пока он не разрядится.

Вы можете избежать постоянной проверки местоположения, установив: pausesLocationUpdatesAutomatically в true,

Однако, если вы установите его на true затем, если ваш драйвер останавливается в таком месте слишком долго (я не знаю, что значит слишком долго), тогда приложение полностью остановится от отслеживания местоположения, пока вы снова не выведете приложение на передний план. Я говорю это на основании:

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

Так что это немного сложно. Вы можете установить pausesLocationUpdatesAutomatically правда, но если ваши бизнес-требования позволяют... сделать что-то вроде stopUpdatingLocation() после 1 часа работы приложения в фоновом режиме, чтобы полностью остановить обновление местоположения.

Да, это возможно.

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

Для получения дополнительной информации ознакомьтесь с Руководством по программированию местоположения и карт.

Другие вопросы по тегам