Significant Location Change — nedir, tetikleyiciler ve çalışma mekanizması

Yazar: IT Sectr Yayınlanma: 2026-03-28 Okuma süresi: 10 dk

Significant Location Change (SLC), cihazın büyük hareketlerini izleyen bir iOS hizmetidir ve uygulamayı yalnızca coğrafi koordinatlarda önemli değişiklikler olduğunda bilgilendirir. Gerçek zamanlı GPS takibinin aksine, SLC konum belirleme için hücresel baz istasyonlarını kullanır ve bu da minimum enerji tüketimi sağlar. Dokümantasyona göre Apple Developer, 2025, Significant Location Change, uygulamanın GPS’i sürekli çalıştırmadan konum güncellemeleri almasını sağlar ve sürekli takibe kıyasla %90’a kadar pil tasarrufu sağlar.

Önemli Noktalar

  • SLC — hücresel baz istasyonlarına dayalı konumdaki önemli değişikliklerin izlenmesi
  • Enerji Tüketimi — sürekli GPS takibine kıyasla %90’a kadar pil tasarrufu
  • Tetikleyiciler — hücresel baz istasyonu değişimi, küme sınırlarını geçme, GPS’i açma
  • Sınırlamalar — minimum güncelleme mesafesi ~500 metre, doğruluk bir kilometreye kadar
  • iOS 13+ — Always izni ve arka plan başlatma kısıtlamaları eklendi

Significant Location Change Nedir

Significant Location Change (SLC), Core Location çerçevesine yerleşik, iOS’un enerji verimli bir konum hizmetidir. GPS modülünü sürekli kullanmadan kullanıcının büyük hareketlerini takip etmesi gereken uygulamalar için tasarlanmıştır. SLC, hücresel iletişim hücreleri arasında geçiş yaparken otomatik olarak etkinleşir ve uygulamayı CLLocationManagerDelegate delegesi aracılığıyla didUpdateLocations yöntemiyle bildirir.

GPS seviyesi takibinin (standart startUpdatingLocation) aksine, SLC işlemci ve GPS çipinin sürekli etkin olmasını gerektirmez. iOS, yaklaşık konum belirleme için hücresel baz istasyonlarından gelen sinyalleri kullanır ve yalnızca koordinatlarda önemli bir fark bulduğunda uygulamayı başlatır. Bu, uygulamanın güncellemeler arasında “uyumasına” izin verir ve minimum enerji tüketir.

SLC, iOS 5’ten itibaren hücresel modüllü tüm cihazlarda kullanılabilir. iPod Touch ve iPad Wi-Fi Only’de hizmet kullanılamaz çünkü koordinatları belirlemek için hücresel baz istasyonları kullanılır. Core Location, hangi olayların önemli sayılacağına otomatik olarak karar verir — geliştirici SLC’nin hassasiyetini ayarlayamaz veya tetikleyici için minimum mesafe belirtemez.

SLC Hangi Uygulamalar İçin Uygundur

SLC, yüksek konum doğruluğuna ihtiyaç duymayan uygulamalar için idealdir: hava durumu takipçileri, teslimat hizmetleri, yakındaki nesneleri arama uygulamaları, ziyaret edilen yerlerin analizi. SLC ayrıca iOS sistemi tarafından coğrafi çitlemeyi (Geofencing) enerji tasarrufu modunda etkinleştirmek için kullanılır. Navigasyon uygulamaları daha hassas GPS takibi gerektirir.

Significant Location Change Nasıl Çalışır

Significant Location Change, cihazın ağa bağlanırken aldığı hücresel baz istasyonu tanımlayıcılarının (Cell ID) analizine dayanarak çalışır. iOS, GPS’i açmadan baz istasyonu koordinatlarının bir veritabanını tutar ve yaklaşık konum belirleyebilir. Cihaz yeni bir baz istasyonuna geçtiğinde, sistem yeni ve önceki konumu karşılaştırır ve fark önemliyse, olayı işlemek için uygulamayı başlatır.

Sistem küme yaklaşımını kullanır: coğrafi alan, belirli bir yarıçapa sahip kümelere ayrılır. SLC, yalnızca bir kümenin sınırını geçtiğinde bir olay üretir, içindeki her mikro harekette değil. Bu, aynı kapsama alanı içinde (bir bina veya mahalle gibi) hareket ederken uygulama çağrılarının çığ gibi artmasını önler. Doğruluk, hücresel baz istasyonlarının yoğunluğuna bağlı olarak 500 metreden birkaç kilometreye kadar değişir.

iOS önemli bir değişiklik algıladığında, uygulamayı arka plan durumundan uyandırır (eğer çalışıyorsa) ve olayı Core Location delegesine iletir. Uygulamanın işleme için kısa bir süresi vardır (arka plan süresinin yaklaşık 10–30 saniyesi) — bu sürede koordinatları işlemeli ve gerekiyorsa GPS aracılığıyla daha hassas bir güncelleme planlamalıdır.

Uygulamayı Arka Plandan Başlatma

SLC, Suspended veya Background durumundan uygulamayı uyandırma ayrıcalığına sahiptir. Uygulama, bellek yetersizliği nedeniyle sistem tarafından sonlandırılmışsa, SLC onu arka planda yeniden başlatacaktır (relaunch). Bunun için uygulamanın didFinishLaunchingWithOptions yönteminde UIApplication.LaunchOptionsKey.location için kaydolması gerekir. Olay işlendikten sonra sistem, uygulamayı tekrar Suspended durumuna getirebilir.

Significant Location Change Tetikleyicileri

Tetikleyiciler yalnızca iOS sistemi tarafından belirlenir — geliştirici, hangi koordinat değişikliğinin “önemli” sayılacağını programlı olarak etkileyemez. Ancak, SLC’nin garantili olay ürettiği belgelenmiş senaryolar vardır. Bu tetikleyicileri anlamak, geliştiricinin doğru uygulama davranışı tasarlamasına yardımcı olur.

Hücresel Baz İstasyonu Değişimi

Cell tower change, SLC’nin ana tetikleyicisidir. Cihaz, hücresel baz istasyonları arasında geçiş yaptığında (şehirde hareket ederken, otoyolda), sistem eski ve yeni baz istasyonu arasındaki koordinatların yeterince değişip değişmediğini kontrol eder. Değişmişse, bir olay üretilir. Yoğun baz istasyonu ağına sahip şehir koşullarında, SLC her 1–3 kilometrede bir tetiklenebilir.

Diğer Uygulamalar Tarafından GPS’in Açılması

Başka bir uygulama veya sistem hizmeti (örneğin “iPhone’umu Bul”, navigasyon) GPS modülünü açarsa, SLC de hassas koordinat güncellemesi alabilir. Bu bir yan etkidir: GPS tam konumu belirler ve iOS bunu SLC’ye kayıtlı tüm uygulamalara gönderir. Ancak bu tetikleyiciye güvenilemez — garantili değildir.

Wi-Fi Ağları Arasında Geçiş

SLC doğrudan Wi-Fi kullanmasa da, cihaz Apple Location Service (Wi-Fi veritabanları aracılığıyla konum) üzerinden yeni koordinatlar alırsa, Wi-Fi ağı değişimi dolaylı olarak bir olaya neden olabilir. iOS, Wi-Fi erişim noktalarının koordinatlarını hash’ler ve bunları baz istasyonu değişimleri arasında konumu iyileştirmek için kullanır.

TetikleyiciGarantiGecikmeDoğruluk
Baz istasyonu değişimiYüksek1–30 sn500 m – 3 km
Diğer uygulamaların GPS’iDüşükAnında10 m’ye kadar
Wi-Fi değişimiOrta5 dakikaya kadar100–500 m

SLC vs Diğer iOS Konum Servisleri

iOS, konum bilgisi almak için her biri kendi doğruluğuna, enerji tüketimine ve kullanım senaryosuna sahip birden çok mekanizma sağlar. Significant Location Change, baz istasyonlarıyla kaba yaklaşım ve hassas GPS takibi arasında yer alır ve gerçek zamanlı yüksek doğruluk gerektirmeyen uygulamalar için dengeli bir seçenek sunar.

Standard Location Service

Standard Location Service (startUpdatingLocation()), koordinatları mümkün olan en yüksek doğrulukta belirlemek için GPS, Wi-Fi ve hücresel baz istasyonlarını kullanır. Doğruluk 10 metreye kadar çıkar, ancak enerji tüketimi yüksektir — GPS modülü sürekli aktiftir. Navigasyon, fitness takipçileri, AR uygulamaları için uygundur. Buna karşılık SLC, sürekli GPS kullanmaz ve doğruluğu 500 metre veya altındadır.

Region Monitoring (Geofencing)

Region Monitoring, belirtilen coğrafi bölgelere giriş ve çıkışı izler. SLC’nin aksine, geliştirici bölgelerin sınırlarını kendisi belirler (100 metreden yarıçap). Geofencing, SLC’yi yardımcı bir mekanizma olarak kullanır — sistem önce SLC aracılığıyla yaklaşık konumu belirler, ardından bölgeye giriş/çıkışı hassas bir şekilde algılamak için GPS’i açar. İzlenebilecek maksimum bölge sayısı 20’dir.

Visit Monitoring

Visit Monitoring, iOS 8+’in yerleri ziyaret etmeyi (varış ve ayrılış) izleyen özel bir hizmetidir. Kullanıcının bir yerde durup durmadığını ve ne zaman ayrıldığını belirlemek için SLC ve diğer sinyallerin bir kombinasyonunu kullanır. Visit Monitoring, SLC’den daha enerji verimlidir çünkü daha az olay üretir ve cihazda makine öğrenimini kullanır.

HizmetDoğrulukEnerji TüketimiArka Plan
SLC500 m – 3 kmÇok düşükEvet
Standart GPS10 m’ye kadarYüksekİzin gerekli
Geofencing100 m’den itibarenDüşükEvet
Visit Monitoring100 m’ye kadarÇok düşükEvet

Enerji Tüketimi ve Pil

SLC, Visit Monitoring dışında, iOS’ta konum bilgisi almanın en enerji verimli yoludur. Apple’a göre, SLC tipik bir kullanım senaryosunda saatte yaklaşık %0,1–0,5 pil şarjı tüketirken, sürekli GPS takibi saatte %5–10 tüketebilir. Tasarruf, GPS modülünün yalnızca her olayda koordinatları doğrulamak için kısa bir süreliğine etkinleştirilmesiyle sağlanır.

iOS, pil optimizasyonu yoluyla SLC’nin enerji tüketimini yönetir. Sistem, uygulamanın SLC olaylarını çok sık işlediğini fark ederse (örneğin trende hareket ederken sık baz istasyonu değişimlerinin çok sayıda olay oluşturması), iOS geçici olarak bildirim sıklığını azaltabilir. Bu otomatik bir mekanizmadır — geliştirici bunu devre dışı bırakamaz.

Her büyük iOS sürümüyle Apple, konuma arka plan erişimi politikasını katılaştırmaktadır. iOS 13’ten itibaren, arka plan konum kullanımı için izin talebi iletişim kutusu değişti: kullanıcı, yalnızca “Uygulama kullanılırken” (While Using) değil, açıkça “Her Zaman” (Always) seçmelidir. Always izni olmadan, SLC uygulama arka plandayken veya sistem tarafından sonlandırıldığında çalışmaz.

  • SLC — saatte %0,1–0,5 pil; GPS — sürekli kullanımda saatte %5–10
  • iOS 13+ — arka plan SLC için Always izni gerekli
  • Optimizasyon — iOS, aktif hareket sırasında SLC sıklığını otomatik olarak azaltır
  • Toplu işleme — birden çok SLC olayı tek bir bildirimde birleştirilebilir

Swift’te Uygulama

Swift’te Significant Location Change’in tam bir uygulama örneğini inceleyelim. Örnek, CLLocationManager kurulumunu, Always izni talebini, izlemeyi başlatmayı, olayları işlemeyi ve sistem tarafından sonlandırıldıktan sonra uygulamanın yeniden başlamasını desteklemeyi içerir. Kod, koordinat işleme ve BGTaskScheduler aracılığıyla arka plan görevleri için async/await ile modern Swift kullanır.

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)")
    }
}

Uygulama Yeniden Başlatmasını Ele Alma

Uygulama sistem tarafından sonlandırılmışsa, SLC yeni bir olay meydana geldiğinde onu otomatik olarak yeniden başlatacaktır. AppDelegate içinde, UIApplication.LaunchOptionsKey.location aracılığıyla konum olayıyla başlatma kontrolü eklenmelidir. Yeniden başlatmanın ardından, uygulama CLLocationManager’ı başlatmalı ve izlemeye devam etmek için startMonitoringSignificantLocationChanges() ç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
    }
}

En İyi Uygulamalar

Significant Location Change’in doğru kullanımı, işlevsellik ve enerji verimliliği arasında bir denge gerektirir. Apple, konuma arka plan erişimini sıkı bir şekilde kontrol eder ve SLC’yi kötüye kullanan veya belirgin bir ihtiyaç olmadan kullanan uygulamalar, App Store’da yayınlanırken reddedilme riskiyle karşı karşıyadır.

SLC’nin Gerekliliğini Her Zaman Açıklayın

Info.plist içinde gerekçe açıklama dizeleri eklenmelidir: NSLocationAlwaysAndWhenInUseUsageDescription ve NSLocationWhenInUseUsageDescription. Açıklama, uygulamanın neden konuma arka plan erişimine ihtiyaç duyduğunu net bir şekilde açıklamalıdır. App Review bu satırları okur ve gerekçe yetersizse veya ifadeler belirsizse uygulamayı reddedebilir. Örnek: “Bu uygulama, hareket ettiğinizde hava durumu tahminini güncellemek için SLC kullanır.”

Yalnızca Gerekli Olayları İşleyin

Her SLC olayında pahalı işlemler (GPS konumu, ağ istekleri) çalıştırmayın. Toplu taşımada hareket ederken SLC, saatte düzinelerce olay üretebilir. Debouncing kullanın: son tam güncellemenin zamanını kaydedin ve önceki güncellemeden 5–10 dakikadan az zaman geçmişse işlemeyi atlayın. Bu, pil ve ağ trafiğinden tasarruf sağlayacaktır.

BGTaskScheduler ile Birleştirin

SLC olayından sonra uzun süreli işlemler için BGTaskScheduler kullanın. Uygulama bir SLC olayı aldığında, BGProcessingTaskRequest veya BGAppRefreshTaskRequest aracılığıyla bir arka plan görevi planlayabilir. Bu, kaynak yoğun işlemlerin (sunucuyla senkronizasyon, rota analizi) bir sonraki arka plan yürütme penceresine ertelenmesine olanak tanır ve SLC yanıtının ana iş parçacığını bloke etmez.

  • Info.plist — konuma arka plan erişimi için zorunlu gerekçe dizeleri
  • Debouncing — olayları 5–10 dakikada birden fazla işlemeyin
  • BGTaskScheduler — SLC olayından sonra arka plan görevi planlayın
  • Always izni — yalnızca gerçekten gerekliyse isteyin
  • pausesLocationUpdatesAutomatically — GPS’in otomatik duraklaması için etkinleştirin

Sıkça Sorulan Sorular

iOS’te Significant Location Change nedir?

Significant Location Change (SLC), hücresel baz istasyonlarına dayalı olarak cihazın büyük hareketlerini izleyen, iOS’un enerji verimli bir hizmetidir. Sürekli GPS takibine kıyasla %90’a kadar daha az enerji tüketir ve yüksek konum doğruluğuna ihtiyaç duymayan uygulamalar için uygundur.

Significant Location Change’in doğruluğu nedir?

SLC’nin doğruluğu, hücresel baz istasyonlarının yoğunluğuna bağlı olarak 500 metreden 3 kilometreye kadar değişir. Şehir bölgelerinde doğruluk daha yüksektir (500 m’ye yakın), kırsal alanlarda daha düşüktür (birkaç kilometreye kadar). SLC, hassas koordinat belirleme için tasarlanmamıştır — hareketlerin kabaca izlenmesi için bir kaynaktır.

SLC için Always izni nasıl alınır?

Info.plist’e NSLocationAlwaysAndWhenInUseUsageDescription dizesini ekledikten sonra CLLocationManager.requestAlwaysAuthorization() işlevini çağırın. iOS 13’ten itibaren, kullanıcının sistem iletişim kutusunda açıkça “Her Zaman” (Always) seçmesi gerekir. Bu izin olmadan SLC arka planda çalışmaz.

SLC sonlandırılmış bir uygulamayı yeniden başlatabilir mi?

Evet, SLC, bellek yetersizliği nedeniyle sistem tarafından sonlandırılmış bir uygulamayı yeniden başlatabilir. Başlatma sırasında didFinishLaunchingWithOptions yönteminde UIApplication.LaunchOptionsKey.location kontrol edin ve izlemeye devam etmek için startMonitoringSignificantLocationChanges() işlevini çağırın.

SLC, Standard Location Service’ten nasıl farklıdır?

SLC yalnızca hücresel baz istasyonlarını kullanır ve sürekli GPS’i açmaz, bu da %90’a kadar pil tasarrufu sağlar. Doğruluk: 500 m – 3 km. Standard Location Service GPS, Wi-Fi ve baz istasyonlarını kullanır, doğruluk 10 m’ye kadar, ancak önemli ölçüde daha fazla enerji tüketir. SLC arka plan izleme için uygundur, GPS — navigasyon için.

Özet

  • Significant Location Change — iOS’ta büyük hareketlerin enerji verimli izlenmesi
  • Mekanizma — sürekli GPS olmadan hücresel baz istasyonlarıyla konum belirleme
  • Doğruluk — hücresel altyapı yoğunluğuna bağlı olarak 500 m – 3 km
  • Tetikleyiciler — baz istasyonu değişimi, diğer uygulamalarla GPS açma, Wi-Fi değişimi
  • İzin — iOS 13+ arka plan SLC için Always gerektirir
  • Enerji Tüketimi — saatte %0,1–0,5’e karşı sürekli GPS için %5–10
  • En İyi Uygulama — olay debouncing’i, uzun işlemler için BGTaskScheduler

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun