Significant Location Change — cos’è, trigger e meccanismo di funzionamento

Autore: IT Sectr Pubblicato: 2026-03-28 Tempo di lettura: 10 min

Significant Location Change (SLC) è un servizio iOS per il monitoraggio degli spostamenti significativi del dispositivo, che notifica l’applicazione solo in caso di modifiche rilevanti delle coordinate geografiche. A differenza del tracciamento GPS in tempo reale, SLC utilizza le torri di telefonia mobile per determinare la posizione, garantendo un consumo energetico minimo. Secondo la documentazione Apple Developer, 2025, Significant Location Change consente all’applicazione di ricevere aggiornamenti di geolocalizzazione senza l’uso continuo del GPS, risparmiando fino al 90% della carica della batteria rispetto al tracciamento continuo.

Punti chiave

  • SLC — monitoraggio dei cambiamenti significativi di posizione basato sulle torri cellulari
  • Consumo energetico — fino al 90% di risparmio della batteria rispetto al tracciamento GPS continuo
  • Trigger — cambio torre cellulare, attraversamento confini cluster, attivazione GPS
  • Limitazioni — distanza minima di aggiornamento ~500 metri, precisione fino a un chilometro
  • iOS 13+ — aggiunta autorizzazione Always e restrizioni agli avvii in background

Cos’è Significant Location Change

Significant Location Change (SLC) è un servizio di geolocalizzazione efficiente dal punto di vista energetico di iOS, integrato nel framework Core Location. È progettato per le applicazioni che devono tracciare gli spostamenti significativi dell’utente senza utilizzare costantemente il modulo GPS. SLC si attiva automaticamente al passaggio tra le celle di telefonia mobile e notifica l’applicazione tramite il delegato CLLocationManagerDelegate con il metodo didUpdateLocations.

A differenza del tracciamento a livello GPS (standard startUpdatingLocation), SLC non richiede un’attività costante del processore e del chip GPS. iOS utilizza i segnali delle torri cellulari per determinare la posizione approssimativa e avvia l’applicazione solo quando rileva una differenza significativa delle coordinate. Ciò consente all’applicazione di «dormire» tra gli aggiornamenti, consumando un minimo di energia.

SLC è disponibile su tutti i dispositivi con modulo cellulare a partire da iOS 5. Su iPod Touch e iPad Wi-Fi Only il servizio non è disponibile poiché per determinare le coordinate vengono utilizzate proprio le torri di telefonia mobile. Core Location decide automaticamente quali eventi considerare significativi — lo sviluppatore non può regolare la sensibilità di SLC né specificare la distanza minima per il trigger.

Per quali applicazioni è adatto SLC

SLC è ideale per le applicazioni che non necessitano di un’elevata precisione di geolocalizzazione: tracker meteo, servizi di consegna, applicazioni per la ricerca di oggetti nelle vicinanze, analisi dei luoghi visitati. SLC viene utilizzato anche dal sistema iOS per attivare il geofencing in modalità di risparmio energetico. Le applicazioni di navigazione richiedono un tracciamento GPS più preciso.

Come funziona Significant Location Change

Significant Location Change funziona sulla base dell’analisi degli identificatori delle torri cellulari (Cell ID) che il dispositivo riceve quando si connette alla rete. iOS mantiene un database delle coordinate delle torri e può determinare la posizione approssimativa senza attivare il GPS. Quando il dispositivo passa a una nuova torre, il sistema confronta la nuova posizione con quella precedente e, se la differenza è significativa, avvia l’applicazione per elaborare l’evento.

Il sistema utilizza un approccio a cluster: lo spazio geografico viene suddiviso in cluster di raggio definito. SLC genera un evento solo quando viene superato il confine di un cluster, non ad ogni micro-spostamento all’interno di esso. Ciò impedisce chiamate a valanga dell’applicazione durante gli spostamenti nella stessa area di copertura (ad esempio, in un edificio o quartiere). La precisione di SLC varia da 500 metri a diversi chilometri a seconda della densità delle torri cellulari.

Quando iOS rileva un cambiamento significativo, risveglia l’applicazione dallo stato di background (se non è in esecuzione) e trasmette l’evento al delegato Core Location. L’applicazione dispone di un tempo breve per l’elaborazione (circa 10–30 secondi di tempo in background) — in questo lasso di tempo deve elaborare le coordinate e, se necessario, pianificare un aggiornamento più preciso tramite GPS.

Avvio dell’applicazione dal background

SLC ha il privilegio di risvegliare l’applicazione dallo stato Suspended o Background. Se l’applicazione è stata terminata dal sistema a causa di memoria insufficiente, SLC la riavvierà (relaunch) in background. Per farlo, l’applicazione deve essere registrata per UIApplication.LaunchOptionsKey.location nel metodo didFinishLaunchingWithOptions. Dopo l’elaborazione dell’evento, il sistema può riportare l’applicazione allo stato Suspended.

Trigger di Significant Location Change

I trigger di SLC sono determinati esclusivamente dal sistema iOS — lo sviluppatore non può influenzare programmaticamente quale cambiamento di coordinate debba essere considerato «significativo». Tuttavia, esistono scenari documentati in cui SLC genera un evento garantito. Comprendere questi trigger aiuta lo sviluppatore a progettare un comportamento corretto dell’applicazione.

Cambio torre cellulare

Cell tower change — il trigger principale di SLC. Quando il dispositivo passa da una torre cellulare all’altra (durante gli spostamenti in città, in autostrada), il sistema verifica se le coordinate tra la vecchia e la nuova torre sono cambiate a sufficienza. In caso affermativo, viene generato un evento. In condizioni urbane con una rete di torri densa, SLC può attivarsi ogni 1–3 chilometri.

Attivazione del GPS da altre applicazioni

Se qualsiasi altra applicazione o servizio di sistema (ad esempio «Trova il mio iPhone», navigazione) attiva il modulo GPS, SLC può ricevere un aggiornamento delle coordinate precise. Questo è un effetto collaterale: il GPS determina la posizione esatta e iOS la trasmette a tutte le applicazioni registrate per SLC. Tuttavia, non si può fare affidamento su questo trigger — non è garantito.

Transizione tra reti Wi-Fi

Sebbene SLC non utilizzi direttamente il Wi-Fi, il cambio di rete Wi-Fi può indirettamente causare un evento se il dispositivo riceve nuove coordinate tramite Apple Location Service (localizzazione tramite database Wi-Fi). iOS esegue l’hash delle coordinate dei punti di accesso Wi-Fi e le utilizza per affinare la posizione tra i cambi di torre.

TriggerGaranziaRitardoPrecisione
Cambio torre cellulareAlta1–30 sec500 m – 3 km
GPS di altre appBassaImmediatoFino a 10 m
Cambio Wi-FiMediaFino a 5 min100–500 m

SLC vs altri servizi di geolocalizzazione iOS

iOS fornisce diversi meccanismi per ottenere la geolocalizzazione, ciascuno con la propria precisione, consumo energetico e scenari d’uso. Significant Location Change si colloca tra l’approssimazione grossolana tramite torri e il tracciamento GPS preciso, offrendo un equilibrio ottimale per le applicazioni che non necessitano di alta precisione in tempo reale.

Standard Location Service

Standard Location Service (startUpdatingLocation()) utilizza GPS, Wi-Fi e torri cellulari per determinare le coordinate con la massima precisione. La precisione arriva fino a 10 metri, ma il consumo energetico è elevato — il modulo GPS è costantemente attivo. Adatto per navigazione, fitness tracker, applicazioni AR. SLC, al contrario, non utilizza il GPS costantemente e ha una precisione di 500 metri o inferiore.

Region Monitoring (Geofencing)

Region Monitoring traccia l’ingresso e l’uscita da zone geografiche definite. A differenza di SLC, lo sviluppatore definisce autonomamente i confini delle regioni (raggio da 100 metri). Il geofencing utilizza SLC come meccanismo ausiliario — il sistema determina prima la posizione approssimativa tramite SLC, poi attiva il GPS per il rilevamento preciso dell’ingresso/uscita dalla zona. Il numero massimo di regioni tracciabili è 20.

Visit Monitoring

Visit Monitoring è un servizio specializzato di iOS 8+ che traccia la visita di luoghi (arrivo e partenza). Utilizza una combinazione di SLC e altri segnali per determinare quando l’utente si è fermato in un luogo e quando lo ha lasciato. Visit Monitoring è più efficiente dal punto di vista energetico rispetto a SLC poiché genera meno eventi e utilizza l’apprendimento automatico sul dispositivo.

ServizioPrecisioneConsumo energeticoBackground
SLC500 m – 3 kmMolto basso
GPS standardFino a 10 mElevatoRichiede autorizzazione
GeofencingDa 100 mBasso
Visit MonitoringFino a 100 mMolto basso

Consumo energetico e batteria

SLC è il modo più efficiente dal punto di vista energetico per ottenere la geolocalizzazione su iOS, a parte Visit Monitoring. Secondo Apple, SLC consuma circa 0,1–0,5% di carica della batteria all’ora in uno scenario di utilizzo tipico, mentre il tracciamento GPS continuo può consumare 5–10% all’ora. Il risparmio è ottenuto perché il modulo GPS viene attivato solo per un breve periodo per verificare le coordinate ad ogni evento.

iOS gestisce il consumo energetico di SLC attraverso l’ottimizzazione della batteria. Se il sistema nota che l’applicazione elabora gli eventi SLC troppo frequentemente (ad esempio, durante uno spostamento in treno con frequenti cambi di torre che generano molti eventi), iOS può temporaneamente ridurre la frequenza delle notifiche. Questo è un meccanismo automatico che lo sviluppatore non può disattivare.

Ad ogni importante rilascio di iOS, Apple inasprisce le politiche di accesso in background alla geolocalizzazione. A partire da iOS 13, il dialogo di richiesta dell’autorizzazione per l’uso della posizione in background è cambiato: l’utente deve scegliere esplicitamente «Sempre» (Always) e non solo «Durante l’uso» (While Using). Senza l’autorizzazione Always, SLC non funzionerà quando l’applicazione è in background o terminata dal sistema.

  • SLC — 0,1–0,5% di batteria all’ora; GPS — 5–10% all’ora in uso continuo
  • iOS 13+ — autorizzazione Always richiesta per SLC in background
  • Ottimizzazione — iOS riduce automaticamente la frequenza di SLC durante il movimento attivo
  • Elaborazione batch — più eventi SLC possono essere raggruppati in una notifica

Implementazione in Swift

Esaminiamo un’implementazione completa di Significant Location Change in Swift. L’esempio include la configurazione di CLLocationManager, la richiesta dell’autorizzazione Always, l’avvio del monitoraggio, l’elaborazione degli eventi e il supporto per il riavvio dell’applicazione dopo la terminazione da parte del sistema. Il codice utilizza Swift moderno con async/await per l’elaborazione delle coordinate e le attività in background tramite 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)")
    }
}

Gestione del riavvio dell’applicazione

Se l’applicazione è stata terminata dal sistema, SLC la riavvierà automaticamente al verificarsi di un nuovo evento. In AppDelegate, è necessario aggiungere un controllo per l’avvio tramite evento di posizione attraverso UIApplication.LaunchOptionsKey.location. Dopo il riavvio, l’applicazione deve inizializzare CLLocationManager e chiamare startMonitoringSignificantLocationChanges() per continuare il monitoraggio.

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

Best practice

L’uso corretto di Significant Location Change richiede un equilibrio tra funzionalità ed efficienza energetica. Apple controlla rigorosamente l’accesso in background alla geolocalizzazione e le applicazioni che abusano di SLC o lo utilizzano senza una chiara necessità rischiano il rifiuto durante la pubblicazione sull’App Store.

Spiegare sempre la necessità di SLC

In Info.plist, è necessario aggiungere le stringhe di giustificazione: NSLocationAlwaysAndWhenInUseUsageDescription e NSLocationWhenInUseUsageDescription. La descrizione deve spiegare chiaramente perché l’applicazione necessita dell’accesso in background alla geolocalizzazione. App Review legge queste stringhe e può rifiutare l’applicazione se la giustificazione è insufficiente o la formulazione è vaga. Esempio: «Questa applicazione utilizza SLC per aggiornare le previsioni meteo quando ci si sposta.»

Elaborare solo gli eventi necessari

Non eseguire operazioni costose (localizzazione GPS, richieste di rete) ad ogni evento SLC. SLC può generare dozzine di eventi all’ora durante gli spostamenti in trasporto. Utilizza il debouncing: salva l’ora dell’ultimo aggiornamento completo e salta l’elaborazione se sono trascorsi meno di 5–10 minuti dall’aggiornamento precedente. Ciò risparmierà batteria e traffico di rete.

Combinare con BGTaskScheduler

Per l’elaborazione prolungata dopo un evento SLC, utilizza BGTaskScheduler. Quando l’applicazione riceve un evento SLC, può pianificare un’attività in background tramite BGProcessingTaskRequest o BGAppRefreshTaskRequest. Ciò consente di posticipare le operazioni dispendiose in termini di risorse (sincronizzazione con il server, analisi del percorso) alla prossima finestra di esecuzione in background, senza bloccare il thread principale di risposta a SLC.

  • Info.plist — stringhe di giustificazione obbligatorie per l’accesso in background alla geolocalizzazione
  • Debouncing — non elaborare eventi più di una volta ogni 5–10 minuti
  • BGTaskScheduler — pianificare attività in background dopo un evento SLC
  • Autorizzazione Always — richiedere solo quando realmente necessario
  • pausesLocationUpdatesAutomatically — attivare per la pausa automatica del GPS

Domande frequenti

Cos’è Significant Location Change in iOS?

Significant Location Change (SLC) è un servizio iOS efficiente dal punto di vista energetico per il monitoraggio degli spostamenti significativi del dispositivo basato sulle torri cellulari. Consuma fino al 90% di energia in meno rispetto al tracciamento GPS continuo ed è adatto per applicazioni che non necessitano di alta precisione di geolocalizzazione.

Qual è la precisione di Significant Location Change?

La precisione di SLC varia da 500 metri a 3 chilometri a seconda della densità delle torri cellulari. Nelle aree urbane la precisione è maggiore (vicino a 500 m), in quelle rurali è inferiore (fino a diversi chilometri). SLC non è progettato per la determinazione precisa delle coordinate — è una risorsa per il monitoraggio approssimativo degli spostamenti.

Come ottenere l’autorizzazione Always per SLC?

Chiama CLLocationManager.requestAlwaysAuthorization() dopo aver aggiunto la stringa NSLocationAlwaysAndWhenInUseUsageDescription in Info.plist. A partire da iOS 13, l’utente deve scegliere esplicitamente «Sempre» (Always) nel dialogo di sistema. Senza questa autorizzazione, SLC non funziona in background.

SLC può riavviare un’applicazione terminata?

Sì, SLC può riavviare l’applicazione se è stata terminata dal sistema a causa di memoria insufficiente. All’avvio, controlla UIApplication.LaunchOptionsKey.location nel metodo didFinishLaunchingWithOptions e chiama startMonitoringSignificantLocationChanges() per continuare il monitoraggio.

Qual è la differenza tra SLC e Standard Location Service?

SLC utilizza solo le torri cellulari e non attiva il GPS costantemente, consentendo un risparmio della batteria fino al 90%. Precisione: da 500 m a 3 km. Standard Location Service utilizza GPS, Wi-Fi e torri, precisione fino a 10 m, ma consuma significativamente più energia. SLC è adatto per il monitoraggio in background, GPS — per la navigazione.

Riepilogo

  • Significant Location Change — monitoraggio efficiente degli spostamenti significativi su iOS
  • Meccanismo — determinazione della posizione tramite torri cellulari senza GPS costante
  • Precisione — 500 m – 3 km a seconda della densità dell’infrastruttura cellulare
  • Trigger — cambio torre, attivazione GPS da altre app, cambio Wi-Fi
  • Autorizzazione — iOS 13+ richiede Always per SLC in background
  • Consumo energetico — 0,1–0,5% all’ora contro 5–10% per GPS continuo
  • Best practice — debouncing degli eventi, BGTaskScheduler per elaborazioni lunghe

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche