Significant Location Change — vad är det, utlösare och funktionsmekanism

Författare: IT Sectr Publicerad: 2026-03-28 Lästid: 10 min

Significant Location Change (SLC) är en iOS-tjänst för övervakning av stora förflyttningar av enheten, som meddelar appen endast vid betydande förändringar av geografiska koordinater. Till skillnad från GPS-spårning i realtid använder SLC mobiltorn för platsbestämning, vilket säkerställer minimal energiförbrukning. Enligt dokumentation Apple Developer, 2025 gör Significant Location Change det möjligt för appen att ta emot geopositionsuppdateringar utan kontinuerlig GPS-drift, vilket sparar upp till 90% batteri jämfört med kontinuerlig spårning.

Huvudpunkter

  • SLC — övervakning av betydande platsförändringar baserat på mobiltorn
  • Energiförbrukning — upp till 90% batteribesparing jämfört med kontinuerlig GPS-spårning
  • Utlösare — byte av mobiltorn, korsning av klustergränser, aktivering av GPS
  • Begränsningar — minsta uppdateringsavstånd ~500 meter, noggrannhet upp till en kilometer
  • iOS 13+ — Always-tillstånd och begränsningar för bakgrundsstart har lagts till

Vad är Significant Location Change

Significant Location Change (SLC) är en energieffektiv iOS-geolokaliseringstjänst inbyggd i Core Location-ramverket. Den är avsedd för appar som behöver övervaka stora förflyttningar av användaren utan kontinuerlig användning av GPS-modulen. SLC aktiveras automatiskt vid övergång mellan mobiltorn och meddelar appen via delegaten CLLocationManagerDelegate med metoden didUpdateLocations.

Till skillnad från GPS-nivåspårning (standard startUpdatingLocation) kräver SLC inte kontinuerlig aktivitet av processorn och GPS-chippet. iOS använder signaler från mobiltorn för att bestämma ungefärlig plats och startar appen endast vid upptäckt av en betydande koordinatskillnad. Detta gör att appen kan “sova” mellan uppdateringar, med minimal energiförbrukning.

SLC är tillgängligt på alla enheter med mobilmodul från och med iOS 5. På iPod Touch och iPad Wi-Fi Only är tjänsten inte tillgänglig eftersom mobiltorn används för koordinatbestämning. Core Location bestämmer automatiskt vilka händelser som anses betydande — utvecklaren kan inte konfigurera SLC-känsligheten eller ange minsta avstånd för utlösare.

För vilka appar är SLC lämpligt

SLC är idealiskt för appar som inte behöver hög noggrannhet på geoposition: väder-trackers, leveranstjänster, appar för att hitta närliggande objekt, analys av besökta platser. SLC används även av iOS-systemet för att aktivera geozoner (Geofencing) i energisparläge. Navigationsappar kräver mer exakt GPS-spårning.

Hur fungerar Significant Location Change

Significant Location Change fungerar baserat på analys av identifierare för mobiltorn (Cell ID) som enheten tar emot vid anslutning till nätverket. iOS upprätthåller en databas med tornkoordinater och kan bestämma ungefärlig plats utan att aktivera GPS. När enheten går över till ett nytt torn, jämför systemet den nya och tidigare platsen och startar appen för bearbetning om skillnaden är betydande.

Systemet använder en klusteransats: det geografiska utrymmet delas in i kluster med en viss radie. SLC genererar en händelse endast vid överskridande av klustergränsen, inte vid varje mikroförflyttning inom det. Detta förhindrar lavinartade app-anrop vid rörelse inom samma täckningszon (t.ex. i en byggnad eller stadsdel). Noggrannhet för SLC varierar från 500 meter till flera kilometer beroende på tätheten av mobiltorn.

När iOS upptäcker en betydande förändring, väcker den appen från bakgrundsstatus (om den inte är startad) och överför händelsen till Core Location-delegaten. Appen får kort tid för bearbetning (cirka 10–30 sekunder bakgrundstid) — under denna tid måste koordinaterna bearbetas och vid behov en mer exakt uppdatering via GPS planeras.

Starta appen från bakgrunden

SLC har privilegiet att väcka appen från status Suspended eller Background. Om appen har dödats av systemet på grund av minnesbrist kommer SLC att starta om den (relaunch) i bakgrunden. För detta måste appen vara prenumererad på UIApplication.LaunchOptionsKey.location i metoden didFinishLaunchingWithOptions. Efter bearbetning av händelsen kan systemet återigen överföra appen till status Suspended.

Utlösare för Significant Location Change

Utlösare för SLC bestäms uteslutande av iOS-systemet — utvecklaren kan inte programmatiskt påverka vilken koordinatförändring som anses ”betydande”. Det finns dock dokumenterade scenarier där SLC garanterat genererar en händelse. Att förstå dessa utlösare hjälper utvecklaren att designa korrekt appbeteende.

Byte av mobiltorn

Cell tower change — den huvudsakliga utlösaren för SLC. När enheten växlar mellan mobiltorn (vid rörelse genom staden, på vägen), kontrollerar systemet om koordinaterna mellan gammalt och nytt torn har ändrats tillräckligt. Om så är fallet genereras en händelse. I stadsmiljöer med tätt tornnätverk kan SLC aktiveras varje 1–3 kilometer.

GPS aktiverat av andra appar

Om någon annan app eller systemtjänst (t.ex. ”Hitta iPhone”, navigering) aktiverar GPS-modulen, kan SLC även få en uppdatering av exakta koordinater. Detta är en bieffekt: GPS bestämmer exakt plats och iOS överför den till alla appar som prenumererar på SLC. Man kan dock inte lita på denna utlösare — den är inte garanterad.

Övergång mellan Wi-Fi-nätverk

Även om SLC inte använder Wi-Fi direkt, kan byte av Wi-Fi-nätverk indirekt orsaka en händelse om enheten får nya koordinater via Apple Location Service (platsbestämning baserat på Wi-Fi-databaser). iOS hash-koordinaterna för Wi-Fi-åtkomstpunkter och använder dem för att förfina positionen mellan tornbyten.

UtlösareGarantiFördröjningNoggrannhet
Byte av mobiltornHög1–30 s500 m – 3 km
GPS från andra apparLågOmedelbartUpp till 10 m
Byte av Wi-FiMedelUpp till 5 min100–500 m

SLC vs andra iOS-geolokaliseringstjänster

iOS tillhandahåller flera mekanismer för att få geolokalisering, var och en med sin egen noggrannhet, energiförbrukning och användningsscenarier. Significant Location Change ligger mellan grov approximation via torn och exakt GPS-spårning, och erbjuder en optimal balans för appar som inte behöver hög realtidsnoggrannhet.

Standard Location Service

Standard Location Service (startUpdatingLocation()) använder GPS, Wi-Fi och mobiltorn för maximalt exakt koordinatbestämning. Noggrannhet upp till 10 meter, men energiförbrukningen är hög — GPS-modulen är ständigt aktiv. Lämplig för navigering, fitness-trackers, AR-appar. SLC använder däremot inte GPS kontinuerligt och har en noggrannhet på 500 meter eller lägre.

Region Monitoring (Geofencing)

Region Monitoring övervakar in- och utträde ur definierade geografiska zoner. Till skillnad från SLC bestämmer utvecklaren själv regiongränserna (radie från 100 meter). Geofencing använder SLC som en hjälpmekanism — systemet bestämmer först ungefärlig plats via SLC och aktiverar sedan GPS för exakt bestämning av in-/utträde. Maximalt antal övervakade regioner — 20.

Visit Monitoring

Visit Monitoring — en specialiserad iOS 8+-tjänst som övervakar besök av platser (ankomst och avresa). Den använder en kombination av SLC och andra signaler för att bestämma när användaren har stannat på en plats och när den har lämnat den. Visit Monitoring är mer energieffektivt än SLC eftersom det genererar färre händelser och använder maskininlärning på enheten.

TjänstNoggrannhetEnergiförbrukningBakgrund
SLC500 m – 3 kmMycket lågJa
Standard GPSUpp till 10 mHögKräver tillstånd
GeofencingFrån 100 mLågJa
Visit MonitoringUpp till 100 mMycket lågJa

Energiförbrukning och batteri

SLC är det mest energieffektiva sättet att få geolokalisering på iOS, bortsett från Visit Monitoring. Enligt Apple förbrukar SLC cirka 0,1–0,5% batteri per timme i ett typiskt användningsscenario, medan kontinuerlig GPS-spårning kan förbruka 5–10% per timme. Besparingen uppnås genom att GPS-modulen endast aktiveras under kort tid för koordinatverifiering vid varje händelse.

iOS hanterar SLC:s energiförbrukning genom batterioptimering. Om systemet märker att appen bearbetar SLC-händelser för ofta (t.ex. enheten rör sig med tåg och frekventa tornbyten genererar många händelser), kan iOS tillfälligt minska notifieringsfrekvensen. Detta är en automatisk mekanism — utvecklaren kan inte stänga av den.

Med varje större iOS-version skärper Apple policyn för bakgrundsåtkomst till geolokalisering. Från och med iOS 13 har dialogrutan för tillståndsförfrågan för bakgrundsanvändning av plats ändrats: användaren måste uttryckligen välja ”Always” (Alltid), inte bara ”While Using” (Medan den används). Utan Always-tillstånd fungerar inte SLC när appen är i bakgrunden eller dödad av systemet.

  • SLC — 0,1–0,5% batteri per timme; GPS — 5–10% per timme vid kontinuerlig drift
  • iOS 13+ — uttryckligt Always-tillstånd krävs för SLC i bakgrunden
  • Optimering — iOS minskar automatiskt SLC-frekvensen vid aktiv rörelse
  • Batchbearbetning — flera SLC-händelser kan slås samman till en notifiering

Implementering i Swift

Låt oss titta på den fullständiga implementeringen av Significant Location Change i Swift. Exemplet omfattar konfiguration av CLLocationManager, Always-tillståndsförfrågan, start av övervakning, händelsehantering och stöd för omstart av appen efter att den dödats av systemet. Koden använder modern Swift med async/await för koordinatbearbetning och bakgrundsuppgifter via BGTaskScheduler.

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

Hantering av app-omstart

Om appen har dödats av systemet kommer SLC automatiskt att starta om den vid en ny händelse. I AppDelegate måste en kontroll av start via platshändelse med UIApplication.LaunchOptionsKey.location läggas till. Efter omstart måste appen initiera CLLocationManager och anropa startMonitoringSignificantLocationChanges() för att fortsätta övervakningen.

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

Bästa praxis

Korrekt användning av Significant Location Change kräver en balans mellan funktionalitet och energieffektivitet. Apple kontrollerar strikt bakgrundsåtkomst till geolokalisering och appar som missbrukar SLC eller använder det utan tydligt behov riskerar avslag vid publicering i App Store.

Förklara alltid behovet av SLC

I Info.plist måste motiveringstext läggas till: NSLocationAlwaysAndWhenInUseUsageDescription och NSLocationWhenInUseUsageDescription. Beskrivningen måste tydligt förklara varför appen behöver bakgrundsåtkomst till geolokalisering. App Review läser dessa texter och kan avvisa appen om motiveringen är otillräcklig eller formuleringarna är otydliga. Exempel: ”Den här appen använder SLC för att uppdatera väderprognosen under din förflyttning.”

Bearbeta endast nödvändiga händelser

Starta inte dyra operationer (GPS-plats, nätverksförfrågningar) vid varje SLC-händelse. SLC kan generera dussintals händelser per timme vid förflyttning med transport. Använd debounding: spara tiden för senaste fullständiga uppdateringen och hoppa över bearbetning om mindre än 5–10 minuter har gått sedan föregående uppdatering. Detta sparar batteri och nätverkstrafik.

Kombinera med BGTaskScheduler

För långvarig bearbetning efter en SLC-händelse, använd BGTaskScheduler. När appen tar emot en SLC-händelse kan den schemalägga en bakgrundsuppgift via BGProcessingTaskRequest eller BGAppRefreshTaskRequest. Detta gör det möjligt att skjuta upp resurskrävande operationer (synkronisering med server, ruttanalys) till närmaste bakgrundsexekveringsfönster, utan att blockera huvudflödet för SLC-svar.

  • Info.plist — obligatoriska motiveringstexter för bakgrundsåtkomst till geolokalisering
  • Debounding — bearbeta inte händelser oftare än 1 gång var 5–10:e minut
  • BGTaskScheduler — schemalägg bakgrundsuppgifter efter en SLC-händelse
  • Always-tillstånd — begär endast vid verkligt behov
  • pausesLocationUpdatesAutomatically — aktivera för automatisk GPS-paus

Vanliga frågor

Vad är Significant Location Change i iOS?

Significant Location Change (SLC) är en energieffektiv iOS-tjänst för övervakning av stora förflyttningar av enheten baserat på mobiltorn. Den förbrukar upp till 90% mindre energi än kontinuerlig GPS-spårning och är lämplig för appar som inte behöver hög noggrannhet på geoposition.

Vilken noggrannhet har Significant Location Change?

Noggrannheten för SLC varierar från 500 meter till 3 kilometer beroende på tätheten av mobiltorn. I stadsmiljöer är noggrannheten högre (närmare 500 m), på landsbygden — lägre (upp till flera kilometer). SLC är inte avsett för exakt koordinatbestämning — det är en resurs för grov övervakning av förflyttningar.

Hur får man Always-tillstånd för SLC?

Anropa CLLocationManager.requestAlwaysAuthorization() efter att ha lagt till texten NSLocationAlwaysAndWhenInUseUsageDescription i Info.plist. Från och med iOS 13 måste användaren uttryckligen välja ”Always” (Alltid) i systemdialogrutan. Utan detta tillstånd fungerar inte SLC i bakgrunden.

Kan SLC starta om en dödad app?

Ja, SLC kan starta om appen om den har dödats av systemet på grund av minnesbrist. Vid start, kontrollera UIApplication.LaunchOptionsKey.location i metoden didFinishLaunchingWithOptions och anropa startMonitoringSignificantLocationChanges() för att fortsätta övervakningen.

Hur skiljer sig SLC från Standard Location Service?

SLC använder endast mobiltorn och aktiverar inte GPS kontinuerligt, vilket ger upp till 90% batteribesparing. Noggrannhet — från 500 m till 3 km. Standard Location Service använder GPS, Wi-Fi och torn, noggrannhet upp till 10 m, men förbrukar betydligt mer energi. SLC är lämpligt för bakgrundsövervakning, GPS — för navigering.

Sammanfattning

  • Significant Location Change — energieffektiv övervakning av stora förflyttningar på iOS
  • Mekanism — platsbestämning baserat på mobiltorn utan kontinuerlig GPS
  • Noggrannhet — 500 m – 3 km beroende på tätheten av mobilinfrastruktur
  • Utlösare — tornbyte, GPS aktiverat av andra appar, Wi-Fi-växling
  • Tillstånd — iOS 13+ kräver Always för SLC i bakgrunden
  • Energiförbrukning — 0,1–0,5% per timme jämfört med 5–10% för kontinuerlig GPS
  • Bästa praxis — debounding av händelser, BGTaskScheduler för långvarig bearbetning

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också