Significant Location Change — bu nədir, tetikləri və işləmə mexanizmi

Müəllif: IT Sectr Dərc olunub: 2026-03-28 Oxuma vaxtı: 10 dəq

Significant Location Change (SLC) iOS cihazın böyük hərəkətlərini izləmək üçün xidmətdir və tətbiqi yalnız coğrafi koordinatlarda əhəmiyyətli dəyişikliklər olduqda xəbərdar edir. Real vaxt rejimində GPS izləmədən fərqli olaraq, SLC yer müyyən etmək üçün mobil telefon stansiyalarından istifadə edir ki, bu da minimal enerji sərfiyyatı təmin edir. Apple Developer, 2025 sənədlərinə görə, Significant Location Change tətbiqə davamlı GPS işi olmadan geopoziya yeniləmələri almağa imkan verir və davamlı izləmə ilə müqayisədə batareyanın 90%-ə qədər qənaət edir.

Əsas məqamlar

  • SLC — mobil telefon stansiyaları əsasında əhəmiyyətli yer dəyişikliklərinin monitorinqi
  • Enerji sərfiyyatı — davamlı GPS izləmə ilə müqayisədə batareyadan 90%-ə qədər qənaət
  • Tetiklər — mobil stansiyanın dəyişməsi, klaster sərhədlərinin keçilməsi, GPS-in işə salınması
  • Məhdudiyyətlər — minimum yeniləmə məsafəsi ~500 metr, dəqiqlik bir kilometrə qədər
  • iOS 13+ — Always icazəsi və fon işəsalma məhdudiyyətləri əlavə edilib

Significant Location Change nədir

Significant Location Change (SLC) Core Location çərçivəsinə daxil edilmiş enerjiyə qənaət edən iOS geolokasiya xidmətidir. O, GPS modulundan davamlı istifadə etmədən istifadəçinin böyük hərəkətlərini izləməli olan tətbiqlər üçün nəzərdə tutulub. SLC mobil telefon stansiyaları arasında keçid zamanı avtomatik aktivləşir və tətbiqi CLLocationManagerDelegate vasitəsilə didUpdateLocations metodu ilə xəbərdar edir.

GPS-level tracking-dən (standart startUpdatingLocation) fərqli olaraq, SLC prosessor və GPS çipinin davamlı aktivliyini tələb etmir. iOS təxmini yer müyyən etmək üçün mobil stansiya siqnallarından istifadə edir və tətbiqi yalnız koordinatlarda əhəmiyyətli fərq aşkar edildikdə işə salır. Bu, tətbiqə yeniləmələr arasında “yuxuya getməyə” imkan verir, minimum enerji sərf edir.

SLC iOS 5-dən etibarən mobil modulu olan bütün cihazlarda mövcuddur. iPod Touch və iPad Wi-Fi Only-də xidmət mövcud deyil, çünki koordinatları müyyən etmək üçün məhz mobil stansiyalardan istifadə olunur. Core Location hansı hadisələrin əhəmiyyətli sayılacağını avtomatik müyyən edir — tərtibatçı SLC-nin həssaslığını konfiqurasiya edə və ya tetik üçün minimum məsafəni təyin edə bilməz.

SLC hansı tətbiqlər üçün uyğundur

SLC yüksək dəqiqlik tələb etməyən tətbiqlər üçün idealdır: hava proqnozu tətbiqləri, çatdırılma xidmətləri, yaxın obyektləri axtarma tətbiqləri, ziyarət edilən yerlərin analitikası. SLC həmçinin iOS sistemi tərəfindən enerji qənaət rejimində geozonları (Geofencing) aktivləşdirmək üçün istifadə olunur. Naviqasiya tətbiqləri daha dəqiq GPS izləmə tələb edir.

Significant Location Change necə işləyir

Significant Location Change cihazın şəbəkəyə qoşularkən aldığı mobil stansiya identifikatorlarının (Cell ID) təhlili əsasında işləyir. iOS stansiya koordinatlarının verilənlər bazasını saxlayır və GPS-i işə salmadan təxmini yeri müyyən edə bilər. Cihaz yeni stansiyaya keçdikdə, sistem yeni və əvvəlki yeri müqayisə edir və fərq əhəmiyyətli olarsa, hadisəni emal etmək üçün tətbiqi işə salır.

Sistem klaster yanaşmasından istifadə edir: coğrafi məkan müəyyən radiuslu klasterlərə bölünür. SLC yalnız klaster sərhədi keçildikdə hadisə yaradır, onun daxilindəki hər bir mikro-hərəkətdə yox. Bu, bir əhatə zonası daxilində (məsələn, binada və ya məhəllədə) hərəkət edərkən tətbiqin kütləvi çağırışlarının qarşısını alır. Dəqiqlik SLC mobil stansiyaların sıxlığından asılı olaraq 500 metrdən bir neçə kilometrə qədər dəyişir.

iOS əhəmiyyətli dəyişiklik müyyən etdikdə, tətbiqi fon vəziyyətindən oyadır (işə salınmayıbsa) və hadisəni Core Location nümayəndəsinə ötürür. Tətbiq emal üçün qısa vaxt alır (təxminən 10–30 saniyə fon vaxtı) — bu müddətdə koordinatları emal etmək və lazım gəldikdə GPS vasitəsilə daha dəqiq yeniləmə planlaşdırmaq lazımdır.

Tətbiqin fondan işə salınması

SLC tətbiqi Suspended və ya Background vəziyyətindən oyatmaq imtiyazına malikdir. Tətbiq yaddaş çatışmazlığı səbəbindən sistem tərəfindən öldürülübsə, SLC onu fonda yenidən işə salacaq (relaunch). Bunun üçün tətbiq didFinishLaunchingWithOptions metodunda UIApplication.LaunchOptionsKey.location-a abunə olmalıdır. Hadisə emal edildikdən sonra sistem tətbiqi yenidən Suspended vəziyyətinə keçirə bilər.

Significant Location Change tetikləri

Tetik SLC yalnız iOS sistemi tərəfindən müyyən edilir — tərtibatçı hansı koordinat dəyişikliyinin “əhəmiyyətli” sayılacağına proqramlı şəkildə təsir edə bilməz. Bununla belə, SLC-nin zəmanətli hadisə yaratdığı sənədləşdirilmiş ssenarilər mövcuddur. Bu tetikləri başa düşmək tərtibatçıya tətbiqin düzgün davranışını layihələndirməyə kömək edir.

Mobil stansiyanın dəyişməsi

Cell tower change — SLC-nin əsas tetikidir. Cihaz mobil stansiyalar arasında keçid edərkən (şəhərdə, yolda hərəkət edərkən), sistem köhnə və yeni stansiya arasında koordinatların kifayət qədər dəyişib-dəyişmədiyini yoxlayır. Əgər bəli — hadisə yaradılır. Sıx stansiya şəbəkəsi olan şəhər şəraitində SLC hər 1–3 kilometrdən bir işə düşə bilər.

GPS-in digər tətbiqlər tərəfindən işə salınması

Hər hansı digər tətbiq və ya sistem xidməti (məsələn, “iPhone-u Tap”, naviqasiya) GPS modulunu işə salarsa, SLC də dəqiq koordinatların yenilənməsini ala bilər. Bu yan təsirdir: GPS dəqiq yeri müyyən edir və iOS onu SLC-yə abunə olan bütün tətbiqlərə ötürür. Lakin bu tetikə etibar etmək olmaz — o zəmanətli deyil.

Wi-Fi şəbəkələri arasında keçid

SLC birbaşa Wi-Fi istifadə etməsə də, Wi-Fi şəbəkəsinin dəyişməsi dolayı yolla hadisəyə səbəb ola bilər, əgər cihaz Apple Location Service vasitəsilə yeni koordinatlar alarsa (Wi-Fi məlumat bazaları əsasında yer müyyən etmə). iOS Wi-Fi giriş nöqtələrinin koordinatlarını heşləyir və stansiya dəyişiklikləri arasında mövqeni dəqiqləşdirmək üçün istifadə edir.

TetikZəmanətGecikməDəqiqlik
Mobil stansiyanın dəyişməsiYüksək1–30 san500 m – 3 km
Digər tətbiqlərin GPS-iAşağıAni10 m-ə qədər
Wi-Fi dəyişməsiOrta5 dəq-ə qədər100–500 m

SLC və digər iOS geolokasiya xidmətləri

iOS geolokasiya əldə etmək üçün bir neçə mexanizm təqdim edir, hər birinin öz dəqiqliyi, enerji sərfiyyatı və istifadə ssenariləri var. Significant Location Change stansiyalar üzrə təxmini yerləşmə ilə dəqiq GPS izləmə arasında niş tutur, real vaxtda yüksək dəqiqlik tələb etməyən tətbiqlər üçün optimal balans təklif edir.

Standard Location Service

Standard Location Service (startUpdatingLocation()) maksimum dəqiqliklə koordinatları müyyən etmək üçün GPS, Wi-Fi və mobil stansiyalardan istifadə edir. Dəqiqlik 10 metrə qədər, lakin enerji sərfiyyatı yüksəkdir — GPS modulu daim aktivdir. Naviqasiya, fitness tətbiqləri, AR tətbiqləri üçün uyğundur. SLC isə əksinə, GPS-i davamlı istifadə etmir və dəqiqliyi 500 metr və daha aşağıdır.

Region Monitoring (Geofencing)

Region Monitoring müəyyən edilmiş coğrafi zonalara giriş və çıxışı izləyir. SLC-dən fərqli olaraq, tərtibatçı regionların sərhədlərini özü müyyən edir (radius 100 metrdən). Geofencing SLC-ni köməkçi mexanizm kimi istifadə edir — sistem əvvəlcə SLC vasitəsilə təxmini yeri müyyən edir, sonra zonaya giriş/çıxışı dəqiq müyyən etmək üçün GPS-i işə salır. Maksimum sayı izlənən regionlar — 20.

Visit Monitoring

Visit Monitoring — iOS 8+ üçün ixtisaslaşmış xidmət, yerləri ziyarət etməyi (gəlmə və getmə) izləyir. O, istifadəçinin bir yerdə dayandığını və nə vaxt getdiyini müyyən etmək üçün SLC və digər siqnalların kombinasiyasından istifadə edir. Visit Monitoring SLC-dən daha enerjiyə qənaətlidir, çünki daha az hadisə yaradır və cihazda maşın öyrənməsindən istifadə edir.

XidmətDəqiqlikEnerji sərfiyyatıFon
SLC500 m – 3 kmÇox aşağıBəli
Standart GPS10 m-ə qədərYüksəkİcazə tələb edir
Geofencing100 m-dənAşağıBəli
Visit Monitoring100 m-ə qədərÇox aşağıBəli

Enerji sərfiyyatı və batareya

SLC Visit Monitoring nəzərə alınmasa, iOS-da geolokasiya əldə etməyin ən enerjiyə qənaətli üsuludur. Apple-a görə, SLC tipik istifadə ssenarisində saatda təxminən 0,1–0,5% batareya sərf edir, davamlı GPS izləmə isə saatda 5–10% sərf edə bilər. Qənaət GPS modulunun hər hadisədə koordinatları yoxlamaq üçün yalnız qısa müddətə işə düşməsi sayəsində əldə edilir.

iOS SLC-nin enerji sərfiyyatını batareya optimallaşdırması vasitəsilə idarə edir. Sistem tətbiqin SLC hadisələrini çox tez-tez emal etdiyini görsə (məsələn, cihaz qatarda hərəkət edir və tez-tez stansiya dəyişməsi çox hadisə yaradır), iOS müvəqqəti olaraq bildirişlərin tezliyini azalda bilər. Bu avtomatik mexanizmdir — tərtibatçı onu söndürə bilməz.

iOS-un hər bir böyük buraxılışı ilə Apple fonda geolokasiyaya giriş siyasətini sərtləşdirir. iOS 13-dən etibarən fonda yer istifadəsi üçün icazə sorğu dialoqu dəyişib: istifadəçi açıq şəkildə “Həmişə” (Always) seçməlidir, təkcə “Tətbiqdən istifadə edərkən” (While Using) yox. Always icazəsi olmadan SLC tətbiq fonda olduqda və ya sistem tərəfindən öldürüldükdə işləməyəcək.

  • SLC — saatda 0,1–0,5% batareya; GPS — davamlı işdə saatda 5–10%
  • iOS 13+ — fonda SLC üçün açıq Always icazəsi tələb olunur
  • Optimallaşdırma — iOS aktiv hərəkət zamanı SLC tezliyini avtomatik azaldır
  • Toplu emal — bir neçə SLC hadisəsi bir bildirişdə birləşdirilə bilər

Swift-də tətbiq

Swift-də Significant Location Change-in tam tətbiqini nəzərdən keçirək. Nümunə CLLocationManager konfiqurasiyası, Always icazəsi sorğu, monitorinqin başladılması, hadisələrin emalı və sistem tərəfindən öldürüldükdən sonra tətbiqin yenidən işə salınması dəstəyini əhatə edir. Kod koordinatları emal etmək üçün async/await ilə müasir Swift və BGTaskScheduler vasitəsilə fon tapşırıqlarından istifadə edir.

swift
import CoreLocation
import UIKit

class LocationManager: NSObject, CLLocationManagerDelegate {

    private let manager = CLLocationManager()

    override init() {
        super.init()
        manager.delegate = self
        manager.pausesLocationUpdatesAutomatically = true
        manager.desiredAccuracy = kCLLocationAccuracyThreeKilometers
    }

    func requestAlwaysAuthorization() {
        manager.requestAlwaysAuthorization()
    }

    func startSignificantLocationUpdates() {
        manager.startMonitoringSignificantLocationChanges()
    }

    func locationManager(_ manager: CLLocationManager,
                           didUpdateLocations locations: [CLLocation]) {
        guard let location = locations.last else { return }
        Task.detached {
            await LocationProcessor.handleLocationUpdate(location)
        }
    }

    func locationManager(_ manager: CLLocationManager,
                           didFailWithError error: Error) {
        Logger.log("SLC error: \(error.localizedDescription)")
    }
}

Tətbiqin yenidən işə salınmasının emalı

Tətbiq sistem tərəfindən öldürülübsə, SLC yeni hadisə baş verdikdə onu avtomatik yenidən işə salacaq. AppDelegate-də UIApplication.LaunchOptionsKey.location vasitəsilə yer hadisəsi ilə işəsalma yoxlanışı əlavə etmək lazımdır. Yenidən işə salındıqdan sonra tətbiq CLLocationManager-i işə salmalı və monitorinqi davam etdirmək üçün startMonitoringSignificantLocationChanges()-i çağırmalıdır.

swift
class AppDelegate: NSObject, UIApplicationDelegate {

    private let manager = LocationManager()

    func application(_ application: UIApplication,
                           didFinishLaunchingWithOptions launchOptions:
                               [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        if launchOptions?.keys.contains(.location) == true {
            Logger.log("App relaunched by SLC event")
        }
        manager.requestAlwaysAuthorization()
        manager.startSignificantLocationUpdates()
        return true
    }
}

Ən yaxşı təcrübələr

Significant Location Change-in düzgün istifadəsi funksionallıq və enerji səmərəliliyi arasında tarazlıq tələb edir. Apple fonda geolokasiyaya girişi ciddi şəkildə idarə edir və SLC-dən sui-istifadə edən və ya açıq ehtiyac olmadan istifadə edən tətbiqlər App Store-da dərc zamanı rədd edilmə riski daşıyır.

SLC ehtiyacını həmişə izah edin

Info.plist-də əsaslandırma sətirləri əlavə etmək lazımdır: NSLocationAlwaysAndWhenInUseUsageDescriptionNSLocationWhenInUseUsageDescription. Təsvir aydın şəkildə tətbiqin niyə fonda geolokasiyaya girişə ehtiyacı olduğunu izah etməlidir. App Review bu sətirləri oxuyur və əsaslandırma kifayət deyilsə və ya ifadələr qeyri-müyyəndirsə, tətbiqi rədd edə bilər. Nümunə: “Bu tətbiq SLC-dən sizin hərəkətiniz zamanı hava proqnozunu yeniləmək üçün istifadə edir.”

Yalnız lazımi hadisələri emal edin

Hər SLC hadisəsində bahalı əməliyyatları (GPS yeri, şəbəkə sorğuları) işə salmayın. SLC nəqliyyatda hərəkət edərkən saatda onlarla hadisə yarada bilər. Debaunsing istifadə edin: son tam yeniləmənin vaxtını saxlayın və əvvəlki yeniləmədən 5–10 dəqiqədən az keçibsə, emalı atlayın. Bu batareyaya və şəbəkə trafikinə qənaət edəcək.

BGTaskScheduler ilə birləşdirin

SLC hadisəsindən sonra uzunmüddətli emal üçün BGTaskScheduler istifadə edin. Tətbiq SLC hadisəsi aldıqda, BGProcessingTaskRequest və ya BGAppRefreshTaskRequest vasitəsilə fon tapşırığı planlaşdıra bilər. Bu, resurs tutumlu əməliyyatları (serverlə sinxronizasiya, marş rut təhlili) ən yaxın fon icra pəncərəsinə təxirə salmağa imkan verir, SLC-yə cavabın əsas axınını bloklamır.

  • Info.plist — fonda geolokasiyaya giriş üçün məcburi əsaslandırma sətirləri
  • Debaunsing — hadisələri 5–10 dəqiqədə 1 dəfədən tez emal etməyin
  • BGTaskScheduler — SLC hadisəsindən sonra fon tapşırıqlarını planlaşdırın
  • Always icazəsi — yalnız real ehtiyac olduqda soruşun
  • pausesLocationUpdatesAutomatically — GPS-in avtomatik fasiləsi üçün aktiv edin

Tez-tez verilən suallar

iOS-da Significant Location Change nədir?

Significant Location Change (SLC) mobil stansiyalar əsasında cihazın böyük hərəkətlərini izləmək üçün enerjiyə qənaət edən iOS xidmətidir. Davamlı GPS izləmədən 90%- ə qədər az enerji sərf edir və yüksək dəqiqlik tələb etməyən tətbiqlər üçün uyğundur.

Significant Location Change-in dəqiqliyi nə qədərdir?

SLC dəqiqliyi mobil stansiyaların sıxlığından asılı olaraq 500 metrdən 3 kilometrə qədər dəyişir. Şəhər şəraitində dəqiqlik daha yüksəkdir (500 m-ə yaxın), kənd yerlərində — daha aşağı (bir neçə kilometrə qədər). SLC dəqiq koordinatları müyyən etmək üçün nəzərdə tutulmayıb — bu hərəkətlərin təxmini monitorinqi üçün resursdur.

SLC üçün Always icazəsini necə almaq olar?

Info.plist-də NSLocationAlwaysAndWhenInUseUsageDescription sətri əlavə etdikdən sonra CLLocationManager.requestAlwaysAuthorization()-i çağırın. iOS 13-dən etibarən istifadəçi sistem dialoqunda açıq şəkildə “Həmişə” (Always) seçməlidir. Bu icazə olmadan SLC fonda işləmir.

SLC öldürülmüş tətbiqi yenidən işə sala bilərmi?

Bəli, SLC yaddaş çatışmazlığı səbəbindən sistem tərəfindən öldürülmüş tətbiqi yenidən işə sala bilər. İşəsalma zamanı didFinishLaunchingWithOptions metodunda UIApplication.LaunchOptionsKey.location-u yoxlayın və monitorinqi davam etdirmək üçün startMonitoringSignificantLocationChanges()-i çağırın.

SLC Standard Location Service-dən nə ilə fərqlənir?

SLC yalnız mobil stansiyalardan istifadə edir və GPS-i davamlı işə salmır, bu da batareyaya 90%- ə qədər qənaət verir. Dəqiqlik — 500 m-dən 3 km-ə qədər. Standard Location Service GPS, Wi-Fi və stansiyalardan istifadə edir, dəqiqlik 10 m-ə qədər, lakin daha çox enerji sərf edir. SLC fond monitorinqi üçün, GPS isə naviqasiya üçün uyğundur.

Xülasə

  • Significant Location Change — iOS-da böyük hərəkətlərin enerjiyə qənaətli monitorinqi
  • Mexanizm — davamlı GPS olmadan mobil stansiyalar əsasında yer müyyən etmə
  • Dəqiqlik — mobil infrastrukturun sıxlığından asılı olaraq 500 m – 3 km
  • Tetik — stansiya dəyişməsi, GPS-in digər tətbiqlər tərəfindən işə salınması, Wi-Fi dəyişməsi
  • İcazə — iOS 13+ fonda SLC işi üçün Always tələb edir
  • Enerji sərfiyyatı — davamlı GPS üçün 5–10%-ə qarşı saatda 0,1–0,5%
  • Ən yaxşı təcrübə — hadisə debaunsingi, uzunmüddətli emal üçün BGTaskScheduler

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