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 km. На мобилним уређајима, GPS чип прима сигнале од сателита и израчунава координате на основу трилатерације — мерења времена преноса сигнала са више сателита. Службе геолокације у мобилним оперативним системима додају GPS-у податке са Wi-Fi приступних тачака и базних станица мобилне телефоније ради убрзавања одређивања координата (A-GPS) и побољшања прецизности у затвореном простору. Према подацима GPS.gov (2024), прецизност цивилног GPS-а је 3-5 метара на чистом небу и до 15 метара у условима густе изградње.

Додатни сателитски системи

Савремени мобилни уређаји подржавају не само амерички GPS систем, већ и друге глобалне навигационе системе: руски GLONASS (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()

// 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 метара. На уређајима су такође доступни GLONASS, 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 метара, допуњен GLONASS, Galileo и BeiDou.
  • Службе геолокације обједињују GPS, Wi-Fi и базне станице мобилне телефоније за брзо и прецизно одређивање координата.
  • Android користи FusedLocationProviderClient са LocationRequest за подешавање прецизности и интервала ажурирања.
  • iOS користи CLLocationManager са desiredAccuracy и делегатом didUpdateLocations за добијање координата.
  • Дозволе се деле на „при коришћењу“ и „увек“, приступ у позадини захтева посебно одобрење корисника.
  • Потрошња енергије GPS-а може се смањити за 85% повећањем интервала и коришћењем значајних промена локације.
  • Препорука — бирајте прецизност и интервал ажурирања у зависности од сценарија: навигатор захтева HIGH, време — LOW.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође