GPS и службы геолокации в мобильных приложениях — что это такое, способы получения координат

Автор: IT Sectr Опубликовано: 2026-03-22 Время чтения: 8 мин

GPS и службы геолокации в мобильных приложениях — это API для определения физического местоположения устройства с помощью спутников, Wi-Fi и мобильных сетей. По данным Google Android Location Guide (2025), более 60% мобильных приложений используют данные о местоположении для персонализации контента. Fused Location Provider на Android объединяет несколько источников для повышения точности и снижения энергопотребления.

Главное

  • GPS — глобальная система спутниковой навигации, обеспечивающая точность до 3-5 метров на открытой местности.
  • Службы геолокации на Android и iOS предоставляют API для получения координат через GPS, Wi-Fi и вышки сотовой связи.
  • FusedLocationProviderClient на Android объединяет GPS, Wi-Fi и датчики для оптимального баланса точности и энергопотребления.
  • CLLocationManager на iOS управляет запросами геолокации с настройкой точности и фоновым режимом.
  • Разрешения на геолокацию делятся на «при использовании» и «всегда» — второе требует дополнительного обоснования.

Что такое GPS и службы геолокации

GPS (Global Positioning System) — это спутниковая система навигации, состоящая из 31 активного спутника на орбите высотой примерно 20 200 км. На мобильных устройствах GPS-чип принимает сигналы от спутников и вычисляет координаты на основе трилатерации — измерения времени прохождения сигнала от нескольких спутников. Службы геолокации в мобильных ОС добавляют к GPS данные от Wi-Fi точек доступа и сотовых вышек для ускорения определения координат (A-GPS) и улучшения точности внутри помещений. По данным GPS.gov (2024), точность гражданского GPS составляет 3-5 метров при ясном небе и до 15 метров в условиях плотной застройки.

Дополнительные спутниковые системы

Современные мобильные устройства поддерживают не только американскую систему GPS, но и другие глобальные навигационные системы: российскую ГЛОНАСС (24 спутника), европейскую Galileo (28 спутников) и китайскую BeiDou. Поддержка нескольких систем одновременно повышает точность и скорость определения координат — устройство может использовать до 40 спутников разных систем для расчёта позиции. На iOS и Android выбор спутниковой системы осуществляется автоматически на уровне аппаратного чипа, разработчику не нужно управлять этим.

Как работает определение местоположения

Процесс определения местоположения на мобильном устройстве состоит из нескольких этапов: сбор данных от источников (спутники, Wi-Fi, соты), фильтрация и коррекция ошибок, вычисление координат и передача результата приложению. Операционная система управляет этим процессом через единый сервис геолокации, который оптимизирует работу всех источников для экономии заряда батареи. Ниже описаны три основных источника данных о местоположении.

GPS и спутниковая навигация

Спутниковая навигация обеспечивает максимальную точность (3-5 метров), но требует прямой видимости неба. В помещении или плотной городской застройке сигнал GPS может быть ослаблен или полностью потерян. Время первого определения позиции (TTFF) составляет 30-60 секунд при холодном старте и 5-10 секунд при горячем. A-GPS (Assisted GPS) ускоряет старт за счёт загрузки эфемерид спутников через интернет вместо ожидания данных со спутников.

Определение по Wi-Fi и вышкам сотовой связи

Wi-Fi позиционирование использует базу данных MAC-адресов точек доступа с известными координатами. Точность составляет 10-50 метров в зоне действия Wi-Fi. Сотовые вышки дают точность от 100 метров до нескольких километров в зависимости от плотности вышек. Комбинация всех источников (Fused Location) позволяет получать координаты с разумной точностью при минимальном энергопотреблении — особенно когда GPS-чип выключен или сигнал спутников недоступен.

Провайдеры геолокации на Android и iOS

На обеих платформах службы геолокации реализованы через системные API с разной степенью абстракции. Android использует FusedLocationProviderClient из Google Play Services, iOS — CLLocationManager из Core Location. Оба API позволяют запрашивать разовую позицию или подписываться на регулярные обновления. Ниже приведён пример получения координат на Android с помощью Fused Location Provider на Kotlin.

Получение координат на Android

kotlin
val fusedClient = LocationServices.getFusedLocationProviderClient(this)

val locationRequest = LocationRequest.Builder(
    Priority.PRIORITY_HIGH_ACCURACY
)
.setIntervalMillis(5000)
.setMinUpdateIntervalMillis(2000)
.build()

val locationCallback = object : LocationCallback() {
    override fun onLocationResult(result: LocationResult) {
        result.lastLocation?.let { location ->
            Log.d("Location", "Lat: ${location.latitude}, Lng: ${location.longitude}")
        }
    }
}

if (checkLocationPermission()) {
    fusedClient.requestLocationUpdates(
        locationRequest, locationCallback,
        Looper.getMainLooper()
    )
}

В примере LocationRequest настраивается с приоритетом HIGH_ACCURACY — это включает GPS для максимальной точности. setIntervalMillis задаёт желаемый интервал обновления (5 секунд), setMinUpdateIntervalMillis — минимальный (2 секунды). Callback onLocationResult вызывается каждый раз, когда система получает новые координаты. Важно проверять разрешение перед вызовом requestLocationUpdates — иначе приложение упадёт с SecurityException.

Получение координат на iOS

swift
import CoreLocation

let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()

// MARK: - CLLocationManagerDelegate
func locationManager(
    _ manager: CLLocationManager,
    didUpdateLocations locations: [CLLocation]
) {
    guard let location = locations.last else { return }
    print("Location: \(location.coordinate.latitude), \(location.coordinate.longitude)")
}

На iOS desiredAccuracy определяет точность запроса: kCLLocationAccuracyBest использует все доступные источники (GPS + Wi-Fi + соты). После запроса разрешения через requestWhenUseAuthorization система показывает диалог пользователю. Делегат didUpdateLocations получает массив CLLocation объектов с координатами, высотой, скоростью и курсом. Для остановки обновлений вызывается stopUpdatingLocation, чтобы сэкономить заряд батареи.

Запрос разрешений на геолокацию

Доступ к геолокации требует явного разрешения пользователя на обеих платформах. На Android используются разрешения ACCESS_FINE_LOCATION (GPS) и ACCESS_COARSE_LOCATION (Wi-Fi/соты). Начиная с Android 10, для фонового доступа требуется отдельное разрешение ACCESS_BACKGROUND_LOCATION. На iOS доступны три уровня: requestWhenInUseAuthorization (только при активном приложении), requestAlwaysAuthorization (в фоне) и временные метки для точного позиционирования. Apple требует обязательного описания в Info.plist: NSLocationWhenInUseUsageDescription или NSLocationAlwaysAndWhenInUseUsageDescription. Без этих ключей запрос разрешения игнорируется.

Оптимизация энергопотребления

Постоянное использование GPS значительно снижает заряд батареи — до 30% за час непрерывной работы на максимальной точности. Для оптимизации энергопотребления рекомендуется использовать геолокацию только когда это необходимо и прекращать обновления при уходе приложения в фон. На Android FusedLocationProviderClient автоматически переключается между GPS и сетевыми источниками в зависимости от доступности и приоритета запроса. На iOS используйте significant-change location service (startMonitoringSignificantLocationChanges) для обновлений с минимальным энергопотреблением — точность ниже (до 500 метров), но батарея почти не расходуется. Также практикуйте пакетную обработку: собирайте координаты с интервалом 5-10 минут и отправляйте на сервер одним запросом через WorkManager на Android или BGTaskScheduler на iOS. Снижение частоты запросов с 1 секунды до 30 секунд уменьшает энергопотребление геолокации на 85%.

Сценарии использования геолокации

Геолокация применяется в широком спектре мобильных приложений: от навигаторов до сервисов доставки. Наиболее распространённые сценарии включают отображение пользователя на карте, геотаргетинг рекламы, отслеживание курьеров, геозоны для push-уведомлений и трекинг фитнес-активности. Каждый сценарий требует своего подхода к точности и периодичности обновлений. Ниже приведена таблица с рекомендациями по настройке для разных типов приложений.

Тип приложенияТочностьИнтервалФоновый режим
НавигаторHIGH (GPS)1-2 секДа
ДоставкаBALANCED (GPS+Wi-Fi)10-30 секДа
ПогодаLOW (Wi-Fi/соты)ОднократноНет
СоцсетьBALANCEDПри открытииНет
ФитнесHIGH (GPS)5-10 секДа

При проектировании геолокационного функционала важно учитывать, что пользователи могут отозвать разрешение в любой момент через настройки системы. Приложение должно корректно обрабатывать ситуацию, когда геолокация недоступна, и показывать понятное объяснение, почему функционал ограничен.

Геозоны (Geofencing)

Geofencing — технология создания виртуальных границ на карте, при пересечении которых приложение получает уведомление. На Android геозоны реализуются через GeofencingClient из Google Play Services, на iOS — через CLCircularRegion из Core Location. При входе или выходе из зоны система пробуждает приложение и отправляет событие даже если приложение закрыто или свёрнуто. Это используется для push-уведомлений при приближении к магазину, напоминаний о задачах по геопозиции и автоматизации IoT-устройств. Максимальное количество геозон ограничено: на Android — 100, на iOS — 20 одновременно. Минимальный радиус зоны — 50 метров на обеих платформах, иначе система может не сработать из-за погрешности определения местоположения. При входе в зону система запускает Intent на Android или вызывает делегат locationManager:didEnterRegion на iOS.

Часто задаваемые вопросы

Что такое GPS в мобильных устройствах?

GPS в смартфоне — это встроенный приёмник сигналов спутниковой системы навигации, определяющий координаты с точностью до 3-5 метров. На устройствах также доступны ГЛОНАСС, Galileo и BeiDou для повышения точности и скорости позиционирования.

Чем отличается GPS от служб геолокации?

GPS — это только спутниковый метод определения координат. Службы геолокации объединяют GPS, Wi-Fi позиционирование и данные сотовых вышек для более быстрого и энергоэффективного определения местоположения, особенно внутри помещений.

Как запросить разрешение на геолокацию на iOS?

Вызовите requestWhenInUseAuthorization() или requestAlwaysAuthorization() на экземпляре CLLocationManager. Предварительно добавьте NSLocationWhenInUseUsageDescription в Info.plist с понятным текстом причины использования геолокации.

Как снизить энергопотребление GPS в приложении?

Используйте FusedLocationProviderClient на Android и significant-change location service на iOS. Увеличьте интервал между запросами до 10-30 секунд, отключайте обновления когда экран выключен и применяйте пакетную отправку координат на сервер.

Можно ли получить геолокацию без GPS?

Да, без GPS можно определить примерное местоположение по Wi-Fi точкам доступа (точность 10-50 метров) или по вышкам сотовой связи (точность 100-5000 метров). На Android для этого используется ACCESS_COARSE_LOCATION.

Итоги

  • GPS — спутниковая система навигации с точностью 3-5 метров, дополняемая ГЛОНАСС, Galileo и BeiDou.
  • Службы геолокации объединяют GPS, Wi-Fi и сотовые вышки для быстрого и точного определения координат.
  • Android использует FusedLocationProviderClient с LocationRequest для настройки точности и интервала обновлений.
  • iOS использует CLLocationManager с desiredAccuracy и делегатом didUpdateLocations для получения координат.
  • Разрешения делятся на «при использовании» и «всегда», фоновый доступ требует отдельного одобрения пользователя.
  • Энергопотребление GPS можно снизить на 85% за счёт увеличения интервала и использования значимых изменений местоположения.
  • Рекомендация — выбирайте точность и интервал обновлений в зависимости от сценария: навигатор требует HIGH, погода — LOW.

Мы разработаем мобильное приложение под ключ

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также