GPS și serviciile de geolocalizare în aplicațiile mobile — ce este, metode de obținere a coordonatelor

Autor: IT Sectr Publicat: 2026-03-22 Timp de citire: 8 min

GPS și serviciile de geolocalizare în aplicațiile mobile — sunt API-uri pentru determinarea locației fizice a dispozitivului cu ajutorul sateliților, Wi-Fi și rețelelor mobile. Conform Google Android Location Guide (2025), peste 60% dintre aplicațiile mobile utilizează datele de locație pentru personalizarea conținutului. Fused Location Provider pe Android combină mai multe surse pentru a crește precizia și a reduce consumul de energie.

Principalele puncte

  • GPS — sistem global de navigație prin satelit, care asigură o precizie de până la 3-5 metri în teren deschis.
  • Serviciile de geolocalizare pe Android și iOS oferă API-uri pentru obținerea coordonatelor prin GPS, Wi-Fi și turnurile de telefonie mobilă.
  • FusedLocationProviderClient pe Android combină GPS, Wi-Fi și senzorii pentru un echilibru optim între precizie și consumul de energie.
  • CLLocationManager pe iOS gestionează cererile de geolocalizare cu setarea preciziei și modul de fundal.
  • Permisiunile de geolocalizare se împart în „la utilizare” și „întotdeauna” — a doua necesită justificare suplimentară.

Ce este GPS și serviciile de geolocalizare

GPS (Global Positioning System) — este un sistem de navigație prin satelit format din 31 de sateliți activi pe orbită la o altitudine de aproximativ 20 200 km. Pe dispozitivele mobile, cipul GPS recepționează semnale de la sateliți și calculează coordonatele pe baza trilaterației — măsurarea timpului de propagare a semnalului de la mai mulți sateliți. Serviciile de geolocalizare din sistemele de operare mobile adaugă la GPS date de la punctele de acces Wi-Fi și turnurile de telefonie mobilă pentru a accelera determinarea coordonatelor (A-GPS) și a îmbunătăți precizia în interiorul clădirilor. Conform datelor GPS.gov (2024), precizia GPS-ului civil este de 3-5 metri pe cer senin și până la 15 metri în condiții de construcție densă.

Sisteme satelitare suplimentare

Dispozitivele mobile moderne suportă nu doar sistemul american GPS, ci și alte sisteme globale de navigație: GLONASS rusesc (24 de sateliți), Galileo european (28 de sateliți) și BeiDou chinezesc. Suportul simultan al mai multor sisteme crește precizia și viteza de determinare a coordonatelor — dispozitivul poate utiliza până la 40 de sateliți din diferite sisteme pentru calcularea poziției. Pe iOS și Android, selectarea sistemului satelitar se face automat la nivelul cipului hardware, dezvoltatorul nu trebuie să gestioneze acest lucru.

Cum funcționează determinarea locației

Procesul de determinare a locației pe un dispozitiv mobil constă în mai multe etape: colectarea datelor de la surse (sateliți, Wi-Fi, rețele mobile), filtrarea și corectarea erorilor, calcularea coordonatelor și transmiterea rezultatului către aplicație. Sistemul de operare gestionează acest proces printr-un serviciu unic de geolocalizare, care optimizează activitatea tuturor surselor pentru economisirea bateriei. Mai jos sunt descrise cele trei surse principale de date de locație.

GPS și navigația prin satelit

Navigația prin satelit asigură precizie maximă (3-5 metri), dar necesită vizibilitate directă a cerului. În interiorul clădirilor sau în zone urbane dense, semnalul GPS poate fi slăbit sau pierdut complet. Timpul până la prima determinare a poziției (TTFF) este de 30-60 de secunde la pornirea rece și 5-10 secunde la pornirea caldă. A-GPS (Assisted GPS) accelerează pornirea prin descărcarea efemeridelor sateliților prin internet, în loc să aștepte datele de la sateliți.

Determinarea poziției prin Wi-Fi și turnurile de telefonie mobilă

Wi-Fi poziționarea utilizează o bază de date cu adrese MAC ale punctelor de acces cu coordonate cunoscute. Precizia este de 10-50 de metri în raza de acțiune Wi-Fi. Turnurile de telefonie mobilă oferă o precizie de la 100 de metri până la câțiva kilometri, în funcție de densitatea turnurilor. Combinarea tuturor surselor (Fused Location) permite obținerea coordonatelor cu o precizie rezonabilă la un consum minim de energie — mai ales când cipul GPS este oprit sau semnalul satelitar nu este disponibil.

Furnizorii de geolocalizare pe Android și iOS

Pe ambele platforme, serviciile de geolocalizare sunt implementate prin API-uri system cu diferite grade de abstractizare. Android utilizează FusedLocationProviderClient din Google Play Services, iOS — CLLocationManager din Core Location. Ambele API-uri permit solicitarea unei poziții unice sau abonarea la actualizări regulate. Mai jos este un exemplu de obținere a coordonatelor pe Android folosind Fused Location Provider în Kotlin.

Obținerea coordonatelor pe 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("Locație", "Lat: ${location.latitude}, Lng: ${location.longitude}")
        }
    }
}

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

În exemplu, LocationRequest este configurat cu prioritatea HIGH_ACCURACY — aceasta activează GPS-ul pentru precizie maximă. setIntervalMillis setează intervalul dorit de actualizare (5 secunde), setMinUpdateIntervalMillis — intervalul minim (2 secunde). Callback-ul onLocationResult este apelat de fiecare dată când sistemul primește coordonate noi. Este important să verificați permisiunea înainte de a apela requestLocationUpdates — altfel aplicația va cădea cu SecurityException.

Obținerea coordonatelor pe 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)")
}

Pe iOS, desiredAccuracy determină precizia cererii: kCLLocationAccuracyBest utilizează toate sursele disponibile (GPS + Wi-Fi + rețele mobile). După solicitarea permisiunii prin requestWhenUseAuthorization, sistemul afișează un dialog utilizatorului. Delegatul didUpdateLocations primește un array de obiecte CLLocation cu coordonate, altitudine, viteză și direcție. Pentru a opri actualizările, se apelează stopUpdatingLocation pentru a economisi bateria.

Solicitarea permisiunilor de geolocalizare

Accesul la geolocalizare necesită permisiunea explicită a utilizatorului pe ambele platforme. Pe Android se utilizează permisiunile ACCESS_FINE_LOCATION (GPS) și ACCESS_COARSE_LOCATION (Wi-Fi/rețele mobile). Începând cu Android 10, accesul în fundal necesită o permisiune separată ACCESS_BACKGROUND_LOCATION. Pe iOS sunt disponibile trei niveluri: requestWhenInUseAuthorization (doar când aplicația este activă), requestAlwaysAuthorization (în fundal) și marcaje temporale pentru poziționare precisă. Apple solicită o descriere obligatorie în Info.plist: NSLocationWhenInUseUsageDescription sau NSLocationAlwaysAndWhenInUseUsageDescription. Fără aceste chei, cererea de permisiune este ignorată.

Optimizarea consumului de energie

Utilizarea continuă a GPS-ului reduce semnificativ durata de viață a bateriei — până la 30% într-o oră de funcționare continuă la precizie maximă. Pentru optimizarea consumului de energie, se recomandă utilizarea geolocalizării doar când este necesar și oprirea actualizărilor când aplicația trece în fundal. Pe Android, FusedLocationProviderClient comută automat între GPS și sursele de rețea în funcție de disponibilitate și prioritatea cererii. Pe iOS, utilizați significant-change location service (startMonitoringSignificantLocationChanges) pentru actualizări cu consum minim de energie — precizia este mai scăzută (până la 500 de metri), dar bateria aproape că nu se consumă. De asemenea, practicați procesarea în loturi: colectați coordonatele la un interval de 5-10 minute și trimiteți-le către server printr-o singură cerere prin WorkManager pe Android sau BGTaskScheduler pe iOS. Reducerea frecvenței cererilor de la 1 secundă la 30 de secunde reduce consumul de energie al geolocalizării cu 85%.

Scenarii de utilizare a geolocalizării

Geolocalizarea este utilizată într-o gamă largă de aplicații mobile: de la navigatoare până la servicii de livrare. Cele mai comune scenarii includ afișarea utilizatorului pe hartă, geotargetarea publicității, urmărirea curierilor, geozone pentru notificări push și urmărirea activității fitness. Fiecare scenariu necesită propria abordare a preciziei și frecvenței actualizărilor. Mai jos este un tabel cu recomandări de configurare pentru diferite tipuri de aplicații.

Tipul aplicațieiPrecizieIntervalMod fundal
NavigatorHIGH (GPS)1-2 secDa
LivrareBALANCED (GPS+Wi-Fi)10-30 secDa
VremeLOW (Wi-Fi/rețele mobile)O singură datăNu
Rețea socialăBALANCEDLa deschidereNu
FitnessHIGH (GPS)5-10 secDa

La proiectarea funcționalității de geolocalizare, este important de luat în considerare că utilizatorii pot revoca permisiunea în orice moment prin setările sistemului. Aplicația trebuie să gestioneze corect situația când geolocalizarea nu este disponibilă și să afișeze o explicație clară despre motivul pentru care funcționalitatea este limitată.

Geofencing (Geozone)

Geofencing — tehnologia de creare a granițelor virtuale pe hartă, la traversarea cărora aplicația primește o notificare. Pe Android, geozonele sunt implementate prin GeofencingClient din Google Play Services, pe iOS — prin CLCircularRegion din Core Location. La intrarea sau ieșirea dintr-o zonă, sistemul trezește aplicația și trimite un eveniment, chiar dacă aplicația este închisă sau minimizată. Aceasta este utilizată pentru notificări push la apropierea de un magazin, memento-uri de sarcini pe bază de locație și automatizarea dispozitivelor IoT. Numărul maxim de geozone este limitat: pe Android — 100, pe iOS — 20 simultan. Raza minimă a zonei este de 50 de metri pe ambele platforme, altfel sistemul poate să nu funcționeze din cauza erorii de determinare a locației. La intrarea în zonă, sistemul pornește un Intent pe Android sau apelează delegatul locationManager:didEnterRegion pe iOS.

Întrebări frecvente

Ce este GPS în dispozitivele mobile?

GPS în smartphone este un receptor încorporat al semnalelor sistemului de navigație prin satelit, care determină coordonatele cu o precizie de 3-5 metri. Pe dispozitive sunt disponibile și GLONASS, Galileo și BeiDou pentru creșterea preciziei și vitezei de poziționare.

Cu ce diferă GPS-ul de serviciile de geolocalizare?

GPS este doar metoda satelitară de determinare a coordonatelor. Serviciile de geolocalizare combină GPS, poziționarea Wi-Fi și datele turnurilor de telefonie mobilă pentru o determinare mai rapidă și mai eficientă energetic a locației, în special în interiorul clădirilor.

Cum să solicitați permisiunea de geolocalizare pe iOS?

Apelați requestWhenInUseAuthorization() sau requestAlwaysAuthorization() pe o instanță CLLocationManager. Adăugați anterior NSLocationWhenInUseUsageDescription în Info.plist cu un text clar al motivului utilizării geolocalizării.

Cum să reduceți consumul de energie al GPS-ului în aplicație?

Utilizați FusedLocationProviderClient pe Android și significant-change location service pe iOS. Măriți intervalul între cereri la 10-30 de secunde, dezactivați actualizările când ecranul este oprit și aplicați trimiterea în loturi a coordonatelor către server.

Se poate obține geolocalizarea fără GPS?

Da, fără GPS se poate determina locația aproximativă prin puncte de acces Wi-Fi (precizie 10-50 de metri) sau turnuri de telefonie mobilă (precizie 100-5000 de metri). Pe Android, pentru aceasta se utilizează ACCESS_COARSE_LOCATION.

Rezumat

  • GPS — sistem de navigație prin satelit cu precizie de 3-5 metri, completat de GLONASS, Galileo și BeiDou.
  • Serviciile de geolocalizare combină GPS, Wi-Fi și turnurile de telefonie mobilă pentru determinarea rapidă și precisă a coordonatelor.
  • Android utilizează FusedLocationProviderClient cu LocationRequest pentru configurarea preciziei și intervalului de actualizare.
  • iOS utilizează CLLocationManager cu desiredAccuracy și delegatul didUpdateLocations pentru obținerea coordonatelor.
  • Permisiunile se împart în „la utilizare” și „întotdeauna”, accesul în fundal necesită aprobarea separată a utilizatorului.
  • Consumul de energie al GPS-ului poate fi redus cu 85% prin mărirea intervalului și utilizarea schimbărilor semnificative de locație.
  • Recomandare — alegeți precizia și intervalul de actualizare în funcție de scenariu: navigatorul necesită HIGH, vremea — LOW.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și