Location Permission mobil inkişafda: bu nədir, giriş səviyyələri və iş prinsipi

Müəllif: IT Sectr Dərc olunub: 2026-05-21 Oxuma vaxtı: 8 dəq

Location Permission — mobil tətbiqin istifadəçidən onun coğrafi mövqeyi haqqında məlumatlara giriş üçün tələb etdiyi icazədir. Bu icazə olmadan tətbiq cihazın koordinatlarını təyin edə bilməz, yəni geolokasiya funksiyalarını təmin edə bilməz. Apple Developer Documentation, 2024-yə görə, geolokasiya xidmətlərindən istifadə edən bütün tətbiqlər sistem dialoqu vasitəsilə istifadəçinin açıq razılığını tələb etməlidir.

Əsas məqamlar

  • Location Permission — mobil tətbiqlərdə cihazın geomoqveyinə giriş üçün məcburi icazə.
  • Giriş səviyyələri hər iki platformada fon və tətbiqdən istifadə zamanı olaraq bölünür.
  • Android dəqiq və təxmini koordinat təyini üçün ACCESS_FINE_LOCATION və ACCESS_COARSE_LOCATION istifadə edir.
  • iOS Info.plist-ə NSLocationWhenInUseUsageDescription və NSLocationAlwaysUsageDescription açarlarının əlavə edilməsini tələb edir.
  • İcazə tələbi tətbiqin yer məlumatlarına niyə ehtiyacı olduğuna dair aydın izahat ehtiva etməlidir.

Location Permission nədir?

Location Permission — tətbiqlərin cihazın coğrafi mövqeyi haqqında məlumatlara girişini tənzimləyən əməliyyat sistemi mexanizmidir. İstifadəçinin açıq razılığı olmadan tətbiq GPS koordinatlarını, Wi-Fi şəbəkə məlumatlarını və ya mobil rabitə qüllələri haqqında məlumatları əldə edə bilməz.

Android və iOS mobil platformaları öz icazə sistemlərini tətbiq edir, lakin ümumi məntiq eynidir: tətbiq tələb olunan icazələri manifestdə və ya konfiqurasiya faylında bəyan edir, sonra onları iş vaxtı tələb edir. Android Developers, 2024-yə görə, Android 10-dan başlayaraq bütün geolokasiya icazələri təhlükəli kateqoriyaya aiddir və iş vaxtı tələbini tələb edir.

Bu yanaşmanın səbəbi istifadəçi məxfiliyinin qorunmasıdır. Yer məlumatları hərəkət marşrutlarını qurmağa, iş və istirahət yerlərini müəyyən etməyə, həmçinin şəxsiyyəti müəyyənləşdirməyə imkan verir. Buna görə də hər iki platforma sorğu dialoqunda şəffaf izahat tələb edir: tətbiq geolokasiyaya girişə niyə ehtiyacı olduğunu göstərməlidir.

Geolokasiya icazəsi nə üçün lazımdır

Geolokasiya icazəsi funksionallığı istifadəçinin fiziki mövqeyini bilməkdən asılı olan hər hansı tətbiq üçün zəruridir. Xəritələr və naviqasiya, çatdırılma tətbiqləri, hava xidmətləri, geoteqləmə ilə sosial şəbəkələr — bütün bu proqram kateqoriyaları Location Permission tələb edir.

Bu icazə olmadan tətbiq cihazın koordinatlarını mövcud üsullardan heç biri ilə təyin edə bilməz: nə GPS modulu vasitəsilə, nə Wi-Fi skan etməklə, nə də mobil rabitə qüllələri ilə mövqeyi təyin etməklə. İstifadəçi istənilən vaxt sistem parametrlərində icazəni geri götürə bilər, bundan sonra tətbiq imtinanı düzgün emal etməlidir.

Pew Research Center (2024) tədqiqatına görə, istifadəçilərin təxminən 45%-i geolokasiyanı əsas funksionallıq üçün istifadə etməyən tətbiqlərdə ona girişi ləğv edir. Bu o deməkdir ki, tərtibatçı sorğunu aydın şəkildə əsaslandırmalı və Location Permission-dan imtina edənlər üçün alternativ mexanizmlər təklif etməlidir.

Hüquqi tələblər

Avropada GDPR və Rusiyada 152-FZ qanunu yer məlumatlarının emalı üçün məlumatlı razılığın alınmasını tələb edir. Tətbiq yalnız sistem dialoqu vasitəsilə icazə tələb etməməli, həm də məlumat toplama məqsədləri barədə ayrıca bildiriş təqdim etməlidir. Bu tələblərin pozulması 20 milyon avroya qədər və ya şirkətin illik dövriyyəsinin 4%-i qədər cərimələrə səbəb olur.

İcazənin olmamasının nəticələri

Əgər tətbiq Location Permission tələb etmirsə və ya istifadəçi girişdən imtina edirsə, tərtibatçı ehtiyat ssenari təmin etməlidir. Xəritə tətbiqi üçün bu ünvanın əl ilə daxil edilməsi, çatdırılma tətbiqi üçün saxlanmış ünvanlar siyahısından seçim, hava xidməti üçün IP ünvanı ilə şəhərin təyin edilməsi ola bilər. Graceful degradation (hamar deqradasiya) Google və Apple tərəfindən tövsiyə edilən standart təcrübədir.

Geolokasiyaya giriş səviyyələri

Geolokasiyaya giriş səviyyələri Android və iOS-da fərqlənir, baxmayaraq ki, ümumi fikir eynidir: giriş nə qədər dəqiqdirsə, platforma tətbiqə bir o qədər sərt tələblər qoyur.

Giriş səviyyəsiAndroidiOS
İstifadə zamanıYalnız tətbiq aktiv olduqdaWhen In Use — yalnız tətbiqdə
FonAlways — daim, hətta fondaAlways — əlavə App Store yoxlaması tələb olunur
TəxminiACCESS_COARSE_LOCATION (500 m-ə qədər dəqiqlik)Precision = Off seçimi ilə (iOS 14+)

Android-də ACCESS_FINE_LOCATION və ACCESS_COARSE_LOCATION

ACCESS_FINE_LOCATION bir neçə metr xəta ilə dəqiq GPS koordinatlarına giriş verir. Bu icazəni manifestdə bəyan etmək üçün android.permission.ACCESS_FINE_LOCATION sabitindən istifadə olunur. ACCESS_COARSE_LOCATION isə Wi-Fi və mobil qüllə məlumatları əsasında 500 metrə qədər dəqiqliklə təxmini yer təmin edir.

iOS-da When In Use və Always

When In Use (istifadə zamanı) tətbiqə koordinatları yalnız ekranda açıq olduqda almağa imkan verir. Always (həmişə) hətta fon rejimində də geolokasiyaya giriş verir, lakin App Store-da məcburi baxış tələb edir. iOS 14-dən başlayaraq, istifadəçi Precision açarı vasitəsilə hər bir tətbiq üçün dəqiq yerləşməni ayrıca söndürə bilər.

Android-də Location Permission tələbi

Android-də Location Permission tələbi iki mərhələdə həyata keçirilir: icazələrin manifestdə bəyan edilməsi və kodda iş vaxtı tələbi. Android 6.0-dan (API 23) başlayaraq, bütün təhlükəli icazələr quraşdırma zamanı deyil, tətbiqin işləməsi zamanı tələb olunur.

Manifestdə bəyan etmə

İlk addım AndroidManifest.xml faylına lazımi icazələri əlavə etməkdir. Dəqiq və təxmini yerləşmə üçün müxtəlif sabitlərdən istifadə olunur.

xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

Kotlin-də iş vaxtı tələbi

Manifestdə bəyan etdikdən sonra tətbiq kodunda icazə tələbi üçün sistem dialoqunu çağırmaq lazımdır. Activity Result API istifadə edərək Kotlin nümunəsinə baxaq.

kotlin
private val locationPermissionRequest =
    registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
    when {
        permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> {
            // İcazə alındı
            getLocation()
        }
        permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> {
            // Yalnız təxmini yer
            getCoarseLocation()
        }
        else -> {
            // İstifadəçi imtina etdi
            showLocationExplanation()
        }
    }
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    checkLocationPermission()
}

İmtinanın işlənməsi və təkrar tələb

İstifadəçi girişdən imtina edərsə, Android sistemi dialoqu avtomatik olaraq təkrar göstərməyə icazə vermir. Tərtibatçı ilkin izahat göstərmək üçün shouldShowRequestPermissionRationale çağırmalıdır. Never Ask Again bayrağı ilə təkrar imtina halında istifadəçini sistem parametrlərinə yönləndirmək lazımdır.

kotlin
private fun checkLocationPermission() {
    when {
        ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) ==
            PackageManager.PERMISSION_GRANTED -> {
            getLocation()
        }
        ActivityCompat.shouldShowRequestPermissionRationale(this,
            Manifest.permission.ACCESS_FINE_LOCATION) -> {
            showRationaleDialog {
                requestLocationPermission()
            }
        }
        else -> {
            openAppSettings()
        }
    }
}

iOS-də Location Permission tələbi

iOS-də Location Permission tələbi Info.plist faylına xüsusi açarların əlavə edilməsini və CLLocationManager sinifinin metodunun çağırılmasını tələb edir. Apple məxfiliyə xüsusi diqqət yetirir, buna görə də sorğu dialoqundakı izahat mətni mümkün qədər konkret olmalıdır.

Info.plist konfiqurasiyası

iOS-da yer tələb etmək üçün Info.plist-ə bir və ya hər iki açarı əlavə etmək lazımdır: istifadə zamanı giriş üçün NSLocationWhenInUseUsageDescription və fon girişi üçün NSLocationAlwaysAndWhenInUseUsageDescription. Hər bir açarın dəyəri istifadəçiyə dialoqda göstəriləcək sətirdir.

xml
<key>NSLocationWhenInUseUsageDescription</key>
<string>Tətbiq xəritədə ən yaxın nöqtələri göstərmək üçün sizin yerinizə ehtiyac duyur.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Tətbiq marşrutu izləmək üçün fonda geolokasiyaya girişə ehtiyac duyur.</string>

Swift-də tələb

Swift kodunda tələb CLLocationManager nümunəsi vasitəsilə yerinə yetirilir. Tələb olunan giriş səviyyəsindən asılı olaraq requestWhenInUseAuthorization və ya requestAlwaysAuthorization çağırılır.

swift
import CoreLocation

class LocationManager: NSObject, CLLocationManagerDelegate {
    private let manager = CLLocationManager()

    func requestLocationAccess() {
        manager.delegate = self
        manager.requestWhenInUseAuthorization()
    }

    func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) {
        switch manager.authorizationStatus {
        case .authorizedWhenInUse, .authorizedAlways:
            startLocationUpdates()
        case .denied, .restricted:
            showSettingsAlert()
        case .notDetermined:
            break
        }
    }
}

Platformalar arasında fərq

Android-dən fərqli olaraq, iOS tərtibatçıya shouldShowRequestPermissionRationale yoxlama metodu təqdim etmir. Sistem izahatı nə vaxt göstərəcəyinə özü qərar verir. Bundan əlavə, iOS-da istifadəçi icazəni yalnız sistem parametrləri vasitəsilə dəyişə bilər — tətbiq istifadəçi seçim etdikdən sonra sistem dialoqunu təkrar çağıra bilməz. RequestAlwaysAuthorization əvvəlcə When In Use tələb edir, sonra ilk razılıq alındıqdan sonra fon girişi üçün ayrıca dialoq göstərir.

Geolokasiya ilə işin ən yaxşı təcrübələri

Location Permission ilə işin ən yaxşı təcrübələri istifadəçi imtinalarını azaltmağa və tətbiq mağazalarının tələblərinə cavab verməyə kömək edir. Google və Apple tövsiyələr dərc edib, onlara riayət etmək tətbiqin təsdiqlənmə ehtimalını artırır.

İcazəni kontekstdə tələb edin

Location Permission sorğu dialoqunu tətbiq işə düşən kimi göstərməyin. Tətbiqi yeni açmış istifadəçi hələ geolokasiyaya girişi niyə təmin etməli olduğunu başa düşmür. Contextual request dialoqun istifadəçiyə həqiqətən icazə tələb edən funksiya lazım olduğu anda görünməsini nəzərdə tutur. Məsələn, «Ən yaxın mağazanı tap» düyməsinə basdıqda.

Səbəbi əvvəlcədən izah edin

Sistem dialoqundan əvvəl öz izahat ekranınızı (pre-permission screen) göstərin. Orada tətbiqin geolokasiyaya niyə ehtiyacı olduğunu, hansı məlumatların toplandığını və necə istifadə ediləcəyini izah edin. İstifadəçi ekranınızda «İcazə ver» düyməsini kliklədikdən sonra sistem dialoqunu göstərin. Appsflyer (2024) məlumatlarına görə, bu yanaşma razılıq konversiyasını 25-35% artırır.

Always-i lazımsız yerə tələb etməyin

Geolokasiyaya fon girişi yalnız fonda işləyən tətbiqlərə lazımdır: naviqatorlara, fəaliyyət izləyicilərinə, çatdırılma tətbiqlərinə. Əgər tətbiqinizə koordinatlar yalnız ekran açıq olduqda lazımdırsa, When In Use tələb edin. App Store Always funksional olaraq əsaslandırılmadıqda tətbiqi rədd edəcək. Android-də fon girişi əlavə olaraq ACCESS_BACKGROUND_LOCATION icazəsi ilə tənzimlənir.

Tez-tez verilən suallar

İstifadəçi Location Permission-dan imtina etsə nə olar?

Tətbiq imtinanı düzgün emal etməli və alternativ ssenari təklif etməlidir. Məsələn, ünvanın əl ilə daxil edilməsi və ya şəhərin IP ünvanı ilə təyini. Sistem dialoqu təkrar göstərilmir — istifadəçini parametrlərə yönləndirmək lazımdır.

Location Permission-u izahatsız tələb etmək olar?

Texniki olaraq bəli, sistem dialoqu ilkin ekran olmadan çağrıla bilər. Lakin izahatsız razılıq konversiyası 30-40% təşkil edir, ilkin ekranla isə 60-75%. Apple və Google həmişə sorğunun səbəbini izah etməyi tövsiyə edir.

Android-də Location Permission statusunu necə yoxlamaq olar?

ContextCompat.checkSelfPermission metodundan Manifest.permission.ACCESS_FINE_LOCATION sabiti ilə istifadə edin. Metod PERMISSION_GRANTED və ya PERMISSION_DENIED qaytarır ki, bu da sistem dialoqunu çağırmadan cari statusu təyin etməyə imkan verir.

ACCESS_FINE_LOCATION ACCESS_COARSE_LOCATION-dan nə ilə fərqlənir?

ACCESS_FINE_LOCATION 3-10 metr xəta ilə dəqiq GPS koordinatlarına giriş verir. ACCESS_COARSE_LOCATION Wi-Fi və mobil qüllələr əsasında 500 metrə qədər dəqiqliklə təxmini yer təmin edir. Android 12+-da tərtibatçı hər iki icazəni eyni anda tələb edə bilər.

BLE skanerləri üçün Location Permission lazımdırmı?

Android-də BLE cihazlarını skan etmək üçün ACCESS_FINE_LOCATION və ya ACCESS_COARSE_LOCATION tələb olunur, çünki BLE siqnalları mövqe trianqulyasiyası üçün istifadə edilə bilər. iOS-da BLE üçün Bluetooth icazəsi kifayətdir, Location Permission tələb olunmur.

Nəticə

  • Location Permission — tətbiqlərin cihazın geomoqveyinə girişini tənzimləyən əsas məxfilik qoruma mexanizmi.
  • Giriş səviyyələri iOS-da istifadə zamanı (When In Use) və fon (Always), Android-də isə dəqiq (ACCESS_FINE_LOCATION) və təxmini (ACCESS_COARSE_LOCATION) daxildir.
  • Android manifestdə icazələrin bəyan edilməsini və API 23-dən başlayaraq Activity Result API vasitəsilə iş vaxtı tələbini tələb edir.
  • iOS Info.plist-ə açarların əlavə edilməsini və sorğu mətnində səbəbin məcburi göstərilməsi ilə CLLocationManager metodlarının çağırılmasını tələb edir.
  • Contextual request — dialoqun tətbiq işə düşdükdə deyil, ehtiyac anında göründüyü ən yaxşı təcrübə.
  • Pre-permission screen Appsflyer (2024) məlumatlarına görə razılıq konversiyasını 25-35% artırır.
  • İstifadəçi imtinası geolokasiyadan istifadə etmədən alternativ ssenari — graceful degradation tələb edir.

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.

Layihəni müzakirə et

Həm də oxuyun