GPS və mobil tətbiqlərdə geolokasiya xidmətləri — peyklər, Wi-Fi və mobil şəbəkələr vasitəsilə cihazın fiziki yerini təyin etmək üçün API-dir. Google Android Location Guide (2025) məlumatlarına görə, mobil tətbiqlərin 60%-dən çoxu məzmunu fərdiləşdirmək üçün yer haqqında məlumatlardan istifadə edir. Android-də Fused Location Provider dəqiqliyi artırmaq və enerji sərfiyyatını azaltmaq üçün bir neçə mənbəni birləşdirir.
Əsas məqamlar
GPS (Global Positioning System) — təxminən 20 200 km hündürlükdə orbitdə 31 aktiv peyki olan peyk naviqasiya sistemidir. Mobil cihazlarda GPS çipi peyklərdən siqnalları qəbul edir və trilaterasiya — bir neçə peykdən siqnalın yayılma vaxtının ölçülməsi əsasında koordinatları hesablayır. Mobil ƏS-də geolokasiya xidmətləri GPS-ə Wi-Fi giriş nöqtələri və mobil rabitə stansiyalarından məlumatları əlavə edərək koordinatların təyinini sürətləndirir (A-GPS) və qapalı məkanlarda dəqiqliyi yaxşılaşdırır. GPS.gov (2024) məlumatlarına görə, mülki GPS-in dəqiqliyi açıq havada 3-5 metr, sıx tikili şəraitində isə 15 metrə qədərdir.
Müasir mobil cihazlar yalnız Amerika GPS sistemini deyil, həm də digər qlobal naviqasiya sistemlərini dəstəkləyir: Rusiyanın QLONASS (24 peyk), Avropanın Galileo (28 peyk) və Çinin BeiDou. Bir neçə sistemin eyni vaxtda dəstəklənməsi koordinatların dəqiqliyini və sürətini artırır — cihaz mövqeyi hesablamaq üçün müxtəlif sistemlərdən 40-a qədər peyk istifadə edə bilər. iOS və Android-də peyk sisteminin seçimi avtomatik olaraq aparat səviyyəsində həyata keçirilir, tərtibatçı bunu idarə etməməlidir.
Mobil cihazda yerin təyini prosesi bir neçə mərhələdən ibarətdir: mənbələrdən məlumatların toplanması (peyklər, Wi-Fi, mobil şəbəkələr), səhvlərin filtrasiyası və korreksiyası, koordinatların hesablanması və nəticənin tətbiqə ötürülməsi. Əməliyyat sistemi bu prosesi vahid geolokasiya xidməti vasitəsilə idarə edir ki, bu da batareyanın qənaəti üçün bütün mənbələrin işini optimallaşdırır. Aşağıda yer haqqında məlumatın üç əsas mənbəyi təsvir edilmişdir.
Peyk naviqasiyası maksimum dəqiqlik (3-5 metr) təmin edir, lakin birbaşa səma görünüşü tələb edir. Qapalı məkanda və ya sıx şəhər tikilisində GPS siqnalı zəifləyə və ya tamamilə itə bilər. İlk mövqe təyini vaxtı (TTFF) soyuq başlanğıcda 30-60 saniyə, isti başlanğıcda isə 5-10 saniyə təşkil edir. A-GPS (Assisted GPS) peyklərdən məlumat gözləmək əvəzinə internet vasitəsilə peyk efemeridlərinin yüklənməsi hesabına başlanğıcı sürətləndirir.
Wi-Fi mövqeləşdirməsi məlum koordinatları olan giriş nöqtələrinin MAC ünvanları verilənlər bazasından istifadə edir. Dəqiqlik Wi-Fi əhatə dairəsində 10-50 metr təşkil edir. Mobil rabitə stansiyaları stansiyaların sıxlığından asılı olaraq 100 metrdən bir neçə kilometrə qədər dəqiqlik verir. Bütün mənbələrin kombinasiyası (Fused Location) minimal enerji sərfiyyatı ilə məqbul dəqiqlikdə koordinatlar əldə etməyə imkan verir — xüsusən GPS çipi söndürüldükdə və ya peyk siqnalı mövcud olmadıqda.
Hər iki platformada geolokasiya xidmətləri müxtəlif abstraksiya dərəcəsi ilə sistem API-ləri vasitəsilə həyata keçirilir. Android Google Play Services-dən FusedLocationProviderClient, iOS isə Core Location-dan CLLocationManager istifadə edir. Hər iki API birdəfəlik mövqe sorğulamağa və ya müntəzəm yeniləmələrə abunə olmağa imkan verir. Aşağıda Kotlin dilində Fused Location Provider istifadə edərək Android-də koordinatların alınması nümunəsi verilmişdir.
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("Yer", "Lat: ${location.latitude}, Lng: ${location.longitude}")
}
}
}
if (checkLocationPermission()) {
fusedClient.requestLocationUpdates(
locationRequest, locationCallback,
Looper.getMainLooper()
)
}
Nümunədə LocationRequest HIGH_ACCURACY prioriteti ilə konfiqurasiya edilir — bu maksimum dəqiqlik üçün GPS-i aktivləşdirir. setIntervalMillis istənilən yeniləmə intervalını (5 saniyə), setMinUpdateIntervalMillis isə minimal intervalı (2 saniyə) təyin edir. onLocationResult callback-i sistem hər dəfə yeni koordinatlar aldıqda çağırılır. requestLocationUpdates çağırmazdan əvvəl icazəni yoxlamaq vacibdir — əks halda tətbiq SecurityException ilə çökəcək.
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-da desiredAccuracy sorğunun dəqiqliyini təyin edir: kCLLocationAccuracyBest bütün mövcud mənbələrdən (GPS + Wi-Fi + mobil şəbəkələr) istifadə edir. requestWhenUseAuthorization vasitəsilə icazə sorğusundan sonra sistem istifadəçiyə dialoq göstərir. didUpdateLocations delegatı koordinatlar, hündürlük, sürət və istiqamət ilə CLLocation obyektləri massivini alır. Yeniləmələri dayandırmaq üçün batareyaya qənaət etmək məqsədilə stopUpdatingLocation çağırılır.
Geolokasiyaya giriş hər iki platformada istifadəçinin açıq razılığını tələb edir. Android-də ACCESS_FINE_LOCATION (GPS) və ACCESS_COARSE_LOCATION (Wi-Fi/mobil şəbəkələr) icazələrindən istifadə olunur. Android 10-dan başlayaraq fon girişi üçün ayrıca ACCESS_BACKGROUND_LOCATION icazəsi tələb olunur. iOS-da üç səviyyə mövcuddur: requestWhenInUseAuthorization (yalnız aktiv tətbiq zamanı), requestAlwaysAuthorization (fonda) və dəqiq mövqeləşdirmə üçün vaxt damğaları. Apple Info.plist-də məcburi təsvir tələb edir: NSLocationWhenInUseUsageDescription və ya NSLocationAlwaysAndWhenInUseUsageDescription. Bu açarlar olmadan icazə sorğusu nəzərə alınmır.
GPS-in davamlı istifadəsi batareyanın doldurulmasını əhəmiyyətli dərəcədə azaldır — maksimum dəqiqlikdə bir saat fasiləsiz iş üçün 30% -ə qədər. Enerji sərfiyyatını optimallaşdırmaq üçün geolokasiyadan yalnız zəruri olduqda istifadə etmək və tətbiq fonda işləyərkən yeniləmələri dayandırmaq tövsiyə olunur. Android-də FusedLocationProviderClient mövcudluq və sorğu prioritetindən asılı olaraq avtomatik olaraq GPS və şəbəkə mənbələri arasında keçid edir. iOS-da minimal enerji sərfiyyatı ilə yeniləmələr üçün significant-change location service (startMonitoringSignificantLocationChanges) istifadə edin — dəqiqlik aşağıdır (500 metrə qədər), lakin batareya demək olar ki, tükənmir. Həmçinin paket emalını tətbiq edin: koordinatları 5-10 dəqiqəlik intervallarla toplayın və Android-də WorkManager və ya iOS-da BGTaskScheduler vasitəsilə bir sorğu ilə serverə göndərin. Sorğu tezliyini 1 saniyədən 30 saniyəyə endirmək geolokasiyanın enerji sərfiyyatını 85% azaldır.
Geolokasiya naviqatorlardan tutmuş çatdırılma xidmətlərinə qədər geniş spektrli mobil tətbiqlərdə istifadə olunur. Ən geniş yayılmış ssenarilərə istifadəçinin xəritədə göstərilməsi, reklamın geohədəflənməsi, kuryerlərin izlənməsi, push bildirişləri üçün geozonalar və fitnes fəaliyyətinin izlənməsi daxildir. Hər bir ssenari dəqiqlik və yeniləmə tezliyinə öz yanaşmasını tələb edir. Aşağıda müxtəlif tətbiq növləri üçün konfiqurasiya tövsiyələri olan cədvəl verilmişdir.
| Tətbiq növü | Dəqiqlik | Interval | Fon rejimi |
|---|---|---|---|
| Naviqator | HIGH (GPS) | 1-2 san | Bəli |
| Çatdırılma | BALANCED (GPS+Wi-Fi) | 10-30 san | Bəli |
| Hava | LOW (Wi-Fi/mobil şəbəkələr) | Tək dəfə | Xeyr |
| Sosial şəbəkə | BALANCED | Açılışda | Xeyr |
| Fitnes | HIGH (GPS) | 5-10 san | Bəli |
Geolokasiya funksionallığını layihələşdirərkən nəzərə almaq lazımdır ki, istifadəçilər istənilən vaxt sistem parametrlərində icazəni geri götürə bilərlər. Tətbiq geolokasiya mövcud olmadıqda bu vəziyyəti düzgün idarə etməli və funksionallığın niyə məhdud olduğunu aydın izah etməlidir.
Geofencing — xəritədə virtual sərhədlər yaratmaq texnologiyasıdır, onları keçdikdə tətbiq bildiriş alır. Android-də geozonalar Google Play Services-dən GeofencingClient vasitəsilə, iOS-da isə Core Location-dan CLCircularRegion vasitəsilə həyata keçirilir. Zonaya daxil olduqda və ya çıxdıqda sistem tətbiqi oyadır və hadisəni göndərir, hətta tətbiq bağlı və ya kiçildilmiş olsa belə. Bu, mağazaya yaxınlaşdıqda push bildirişləri, yer əsaslı tapşırıq xatırlatmaları və IoT cihazlarının avtomatlaşdırılması üçün istifadə olunur. Geozonaların maksimum sayı məhduddur: Android-də — 100, iOS-da — eyni anda 20. Minimal zona radiusu hər iki platformada 50 metrdir, əks halda sistem yerin təyini xətası səbəbindən işləməyə bilər. Zonaya daxil olduqda sistem Android-də Intent işə salır və ya iOS-da locationManager:didEnterRegion delegatını çağırır.
Tez-tez verilən suallar
Smartfonda GPS 3-5 metr dəqiqliklə koordinatları təyin edən quraşdırılmış peyk naviqasiya siqnal qəbuledicisidir. Cihazlarda dəqiqlik və mövqeləşdirmə sürətini artırmaq üçün QLONASS, Galileo və BeiDou da mövcuddur.
GPS yalnız koordinatların təyin edilməsinin peyk üsuludur. Geolokasiya xidmətləri GPS, Wi-Fi mövqeləşdirmə və mobil rabitə stansiyalarının məlumatlarını birləşdirərək daha sürətli və enerji səmərəli yer təyini təmin edir, xüsusən qapalı məkanlarda.
CLLocationManager nümunəsində requestWhenInUseAuthorization() və ya requestAlwaysAuthorization() çağırın. Əvvəlcədən Info.plist-ə geolokasiyadan istifadə səbəbini izah edən mətnlə NSLocationWhenInUseUsageDescription əlavə edin.
Android-də FusedLocationProviderClient, iOS-da isə significant-change location service istifadə edin. Sorğular arası intervalı 10-30 saniyəyə qədər artırın, ekran söndürüldükdə yeniləmələri söndürün və koordinatların serverə paket göndərilməsini tətbiq edin.
Bəli, GPS olmadan təxmini yeri Wi-Fi giriş nöqtələri (dəqiqlik 10-50 metr) və ya mobil rabitə stansiyaları (dəqiqlik 100-5000 metr) vasitəsilə təyin etmək olar. Android-də bunun üçün ACCESS_COARSE_LOCATION istifadə olunur.
Xülasə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun