Significant Location Change (SLC) es un servicio de iOS para monitorear grandes desplazamientos del dispositivo que notifica a la aplicación solo cuando se producen cambios significativos en las coordenadas geográficas. A diferencia del rastreo GPS en tiempo real, SLC utiliza torres de telefonía móvil para determinar la ubicación, lo que garantiza un consumo mínimo de energía. Según la documentación de Apple Developer, 2025, Significant Location Change permite que la aplicación reciba actualizaciones de geolocalización sin el funcionamiento constante del GPS, ahorrando hasta un 90% de batería en comparación con el rastreo continuo.
Puntos clave
Significant Location Change (SLC) es un servicio de geolocalización energéticamente eficiente de iOS integrado en el framework Core Location. Está diseñado para aplicaciones que necesitan rastrear grandes desplazamientos del usuario sin usar constantemente el módulo GPS. SLC se activa automáticamente al cambiar entre torres de telefonía móvil y notifica a la aplicación a través del delegado CLLocationManagerDelegate con el método didUpdateLocations.
A diferencia del rastreo a nivel GPS (el estándar startUpdatingLocation), SLC no requiere actividad constante del procesador ni del chip GPS. iOS utiliza señales de torres de telefonía móvil para determinar la ubicación aproximada y lanza la aplicación solo cuando se detecta una diferencia significativa de coordenadas. Esto permite que la aplicación “duerma” entre actualizaciones, consumiendo mínima energía.
SLC está disponible en todos los dispositivos con módulo celular, desde iOS 5. En iPod Touch y iPad solo Wi-Fi, el servicio no está disponible porque utiliza torres de telefonía móvil para determinar las coordenadas. Core Location decide automáticamente qué eventos se consideran significativos — el desarrollador no puede configurar la sensibilidad de SLC ni especificar una distancia mínima para el disparador.
SLC es ideal para aplicaciones que no requieren alta precisión de geolocalización: rastreadores meteorológicos, servicios de entrega, aplicaciones para buscar lugares cercanos y análisis de lugares visitados. SLC también es utilizado por el sistema iOS para activar Geofencing en modo de ahorro de energía. Las aplicaciones de navegación requieren un rastreo GPS más preciso.
Significant Location Change funciona analizando los identificadores de torres de telefonía móvil (Cell ID) que el dispositivo recibe al conectarse a la red. iOS mantiene una base de datos de coordenadas de torres y puede determinar la ubicación aproximada sin activar el GPS. Cuando el dispositivo cambia a una nueva torre, el sistema compara la ubicación nueva y la anterior y, si la diferencia es significativa, lanza la aplicación para procesar el evento.
El sistema utiliza un enfoque de clúster: el espacio geográfico se divide en clústeres de un radio determinado. SLC genera un evento solo al cruzar el límite de un clúster, no con cada microdesplazamiento dentro de él. Esto evita llamadas avalancha a la aplicación al moverse dentro de una misma zona de cobertura (por ejemplo, dentro de un edificio o distrito). La precisión de SLC oscila entre 500 metros y varios kilómetros, según la densidad de torres de telefonía móvil.
Cuando iOS detecta un cambio significativo, despierta la aplicación desde el estado de segundo plano (si no se está ejecutando) y pasa el evento al delegado de Core Location. La aplicación recibe un tiempo breve de procesamiento (aproximadamente 10–30 segundos en segundo plano) — suficiente para procesar las coordenadas y, si es necesario, programar una actualización más precisa a través del GPS.
SLC tiene el privilegio de despertar la aplicación desde el estado Suspendido o en Segundo Plano. Si la aplicación fue eliminada por el sistema debido a falta de memoria, SLC la reiniciará (relanzamiento) en segundo plano. Para ello, la aplicación debe suscribirse a UIApplication.LaunchOptionsKey.location en el método didFinishLaunchingWithOptions. Después de procesar el evento, el sistema puede volver a poner la aplicación en estado Suspendido.
Los disparadores de SLC son determinados exclusivamente por el sistema iOS — el desarrollador no puede influir programáticamente sobre qué cambios de coordenadas se consideran “significativos”. Sin embargo, existen escenarios documentados en los que SLC genera un evento de forma garantizada. Comprender estos disparadores ayuda al desarrollador a diseñar un comportamiento correcto de la aplicación.
El cambio de torre de telefonía móvil es el disparador principal de SLC. Cuando el dispositivo cambia entre torres de telefonía móvil (al moverse por la ciudad o carretera), el sistema comprueba si las coordenadas han cambiado lo suficiente entre la torre antigua y la nueva. Si es así, se genera un evento. En áreas urbanas con una red densa de torres, SLC puede activarse cada 1–3 kilómetros.
Si cualquier otra aplicación o servicio del sistema (por ejemplo, “Buscar mi iPhone”, navegación) activa el módulo GPS, SLC también puede recibir una actualización de coordenadas precisas. Esto es un efecto secundario: el GPS determina la ubicación exacta e iOS la transmite a todas las aplicaciones suscritas a SLC. Sin embargo, no se recomienda confiar en este disparador — no está garantizado.
Aunque SLC no utiliza Wi-Fi directamente, el cambio de red Wi-Fi puede provocar indirectamente un evento si el dispositivo recibe nuevas coordenadas a través de Apple Location Service (ubicación basada en bases de datos Wi-Fi). iOS hashea las coordenadas de los puntos de acceso Wi-Fi y las utiliza para refinar la posición entre cambios de torre.
| Disparador | Garantía | Latencia | Precisión |
|---|---|---|---|
| Cambio de torre celular | Alta | 1–30 seg | 500 m – 3 km |
| GPS de otras aplicaciones | Baja | Instantáneo | Hasta 10 m |
| Cambio de Wi-Fi | Media | Hasta 5 min | 100–500 m |
iOS proporciona varios mecanismos para obtener la geolocalización, cada uno con su propia precisión, consumo de energía y casos de uso. Significant Location Change ocupa un nicho entre la aproximación gruesa por torres y el rastreo GPS preciso, ofreciendo un equilibrio óptimo para aplicaciones que no necesitan alta precisión en tiempo real.
Standard Location Service (startUpdatingLocation()) utiliza GPS, Wi-Fi y torres de telefonía móvil para obtener la máxima precisión de coordenadas. La precisión es de hasta 10 metros, pero el consumo de energía es alto — el módulo GPS está constantemente activo. Adecuado para navegación, rastreadores fitness y aplicaciones de RA. SLC, por el contrario, no utiliza el GPS constantemente y tiene una precisión de 500 metros o menos.
Region Monitoring rastrea la entrada y salida de zonas geográficas definidas. A diferencia de SLC, el desarrollador define los límites de las regiones (radio desde 100 metros). Geofencing utiliza SLC como mecanismo auxiliar — el sistema primero determina la ubicación aproximada mediante SLC y luego activa el GPS para la detección precisa de entrada/salida. El número máximo de regiones monitorizadas es 20.
Visit Monitoring es un servicio especializado de iOS 8+ que rastrea las visitas a lugares (llegada y salida). Utiliza una combinación de SLC y otras señales para determinar cuándo un usuario se ha detenido en un lugar y cuándo lo ha abandonado. Visit Monitoring es más eficiente energéticamente que SLC, ya que genera menos eventos y utiliza aprendizaje automático en el dispositivo.
| Servicio | Precisión | Consumo de energía | Segundo plano |
|---|---|---|---|
| SLC | 500 m – 3 km | Muy bajo | Sí |
| GPS estándar | Hasta 10 m | Alto | Requiere permiso |
| Geofencing | Desde 100 m | Bajo | Sí |
| Visit Monitoring | Hasta 100 m | Muy bajo | Sí |
SLC es la forma más eficiente energéticamente de obtener geolocalización en iOS, exceptuando Visit Monitoring. Según Apple, SLC consume aproximadamente un 0,1–0,5% de carga de batería por hora en un escenario de uso típico, mientras que el rastreo GPS continuo puede consumir un 5–10% por hora. El ahorro se consigue porque el módulo GPS solo se activa durante un breve período para verificar las coordenadas en cada evento.
iOS gestiona el consumo de energía de SLC mediante la optimización de batería. Si el sistema observa que la aplicación procesa eventos SLC con demasiada frecuencia (por ejemplo, el dispositivo se mueve en un tren y los cambios frecuentes de torre generan muchos eventos), iOS puede reducir temporalmente la frecuencia de las notificaciones. Este es un mecanismo automático — el desarrollador no puede desactivarlo.
Con cada versión importante de iOS, Apple endurece las políticas de acceso a la geolocalización en segundo plano. A partir de iOS 13, el diálogo del sistema para solicitar permiso de ubicación en segundo plano cambió: el usuario debe seleccionar explícitamente “Siempre” en lugar de solo “Mientras usa la aplicación”. Sin el permiso Siempre, SLC no funcionará cuando la aplicación esté en segundo plano o haya sido eliminada por el sistema.
Veamos una implementación completa de Significant Location Change en Swift. El ejemplo incluye la configuración de CLLocationManager, la solicitud del permiso Siempre, el inicio del monitoreo, el manejo de eventos y el soporte para el reinicio de la aplicación después de ser eliminada por el sistema. El código utiliza Swift moderno con async/await para el procesamiento de coordenadas y tareas en segundo plano mediante BGTaskScheduler.
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)")
}
}
Si la aplicación fue eliminada por el sistema, SLC la reiniciará automáticamente cuando ocurra un nuevo evento. En AppDelegate, debes agregar una comprobación de inicio por evento de ubicación mediante UIApplication.LaunchOptionsKey.location. Después del reinicio, la aplicación debe inicializar CLLocationManager y llamar a startMonitoringSignificantLocationChanges() para continuar con el monitoreo.
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
}
}
El uso correcto de Significant Location Change requiere un equilibrio entre funcionalidad y eficiencia energética. Apple controla estrictamente el acceso en segundo plano a la geolocalización, y las aplicaciones que abusan de SLC o lo utilizan sin una necesidad clara corren el riesgo de ser rechazadas al publicarse en la App Store.
En Info.plist, debes agregar cadenas de justificación: NSLocationAlwaysAndWhenInUseUsageDescription y NSLocationWhenInUseUsageDescription. La descripción debe explicar claramente por qué la aplicación necesita acceso a la geolocalización en segundo plano. App Review lee estas cadenas y puede rechazar la aplicación si la justificación es insuficiente o la redacción es vaga. Ejemplo: “Esta aplicación utiliza SLC para actualizar el pronóstico del tiempo cuando te desplazas.”
No inicies operaciones costosas (ubicación GPS, solicitudes de red) con cada evento SLC. SLC puede generar decenas de eventos por hora al moverse en transporte. Utiliza debouncing: guarda la hora de la última actualización completa y omite el procesamiento si han pasado menos de 5–10 minutos desde la actualización anterior. Esto ahorrará batería y tráfico de red.
Para procesamiento prolongado después de un evento SLC, utiliza BGTaskScheduler. Cuando la aplicación recibe un evento SLC, puede programar una tarea en segundo plano mediante BGProcessingTaskRequest o BGAppRefreshTaskRequest. Esto permite posponer operaciones intensivas en recursos (sincronización con el servidor, análisis de ruta) hasta la próxima ventana de ejecución en segundo plano, sin bloquear el hilo principal de respuesta a SLC.
Preguntas frecuentes
Significant Location Change (SLC) es un servicio eficiente de iOS para monitorear grandes desplazamientos del dispositivo basado en torres de telefonía móvil. Consume hasta un 90% menos de energía que el rastreo GPS continuo y es adecuado para aplicaciones que no requieren alta precisión de geolocalización.
La precisión de SLC varía de 500 metros a 3 kilómetros según la densidad de torres de telefonía móvil. En áreas urbanas, la precisión es mayor (cerca de 500 m), mientras que en zonas rurales es menor (hasta varios kilómetros). SLC no está diseñado para la determinación precisa de coordenadas — es un recurso para monitoreo aproximado de desplazamientos.
Llama a CLLocationManager.requestAlwaysAuthorization() después de agregar la cadena NSLocationAlwaysAndWhenInUseUsageDescription en Info.plist. A partir de iOS 13, el usuario debe seleccionar explícitamente “Siempre” en el diálogo del sistema. Sin este permiso, SLC no funciona en segundo plano.
Sí, SLC puede reiniciar una aplicación si fue eliminada por el sistema debido a falta de memoria. Al iniciar, verifica UIApplication.LaunchOptionsKey.location en el método didFinishLaunchingWithOptions y llama a startMonitoringSignificantLocationChanges() para continuar con el monitoreo.
SLC utiliza solo torres de telefonía móvil y no activa el GPS constantemente, lo que proporciona un ahorro de batería de hasta el 90%. La precisión oscila entre 500 m y 3 km. Standard Location Service utiliza GPS, Wi-Fi y torres, con una precisión de hasta 10 m, pero consume significativamente más energía. SLC es adecuado para monitoreo en segundo plano, el GPS para navegación.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también