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("Місцезнаходження", "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()

// МІТКА: - 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 + соти). Після запиту дозволу через requestWhenInUseAuthorization система показує діалог користувачеві. Делегат 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 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

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