Significant Location Change — qué es, disparadores y mecanismo de funcionamiento

Autor: IT Sectr Publicado: 2026-03-28 Tiempo de lectura: 10 min

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

  • SLC — monitoreo de cambios significativos de ubicación basado en torres de telefonía móvil
  • Consumo de energía — hasta un 90% de ahorro de batería frente al rastreo GPS continuo
  • Disparadores — cambio de torre de telefonía, cruce de límites de clúster, activación del GPS
  • Limitaciones — distancia mínima de actualización ~500 metros, precisión de hasta un kilómetro
  • iOS 13+ — se añadió el permiso Siempre y restricciones en ejecuciones en segundo plano

Qué es Significant Location Change

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.

Para qué aplicaciones es adecuado SLC

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.

Cómo funciona Significant Location Change

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.

Inicio de la aplicación desde segundo plano

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.

Disparadores de Significant Location Change

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.

Cambio de torre de telefonía móvil

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.

Activación del GPS por otras aplicaciones

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.

Cambio de red Wi-Fi

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.

DisparadorGarantíaLatenciaPrecisión
Cambio de torre celularAlta1–30 seg500 m – 3 km
GPS de otras aplicacionesBajaInstantáneoHasta 10 m
Cambio de Wi-FiMediaHasta 5 min100–500 m

SLC frente a otros servicios de geolocalización de iOS

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

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 (Geofencing)

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

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.

ServicioPrecisiónConsumo de energíaSegundo plano
SLC500 m – 3 kmMuy bajo
GPS estándarHasta 10 mAltoRequiere permiso
GeofencingDesde 100 mBajo
Visit MonitoringHasta 100 mMuy bajo

Consumo de energía y batería

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.

  • SLC — 0,1–0,5% de batería por hora; GPS — 5–10% por hora en funcionamiento continuo
  • iOS 13+ — se requiere permiso explícito Siempre para SLC en segundo plano
  • Optimización — iOS reduce automáticamente la frecuencia de SLC durante el movimiento activo
  • Procesamiento por lotes — varios eventos SLC pueden combinarse en una sola notificación

Implementación en Swift

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.

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

Manejo del reinicio de la aplicación

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.

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

Mejores prácticas

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.

Explica siempre la necesidad de SLC

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.”

Procesa solo los eventos necesarios

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.

Combina con BGTaskScheduler

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.

  • Info.plist — cadenas de justificación obligatorias para el acceso a la geolocalización en segundo plano
  • Debouncing — no proceses eventos más de una vez cada 5–10 minutos
  • BGTaskScheduler — programa tareas en segundo plano después de un evento SLC
  • Permiso Siempre — solicítalo solo cuando sea realmente necesario
  • pausesLocationUpdatesAutomatically — actívalo para pausa automática del GPS

Preguntas frecuentes

Qué es Significant Location Change en iOS?

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.

Cuál es la precisión de Significant Location Change?

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.

Cómo obtener el permiso Siempre para SLC?

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.

Puede SLC reiniciar una aplicación eliminada?

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.

En qué se diferencia SLC de Standard Location Service?

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

  • Significant Location Change — monitoreo eficiente de grandes desplazamientos en iOS
  • Mecanismo — determinación de ubicación mediante torres de telefonía móvil sin GPS constante
  • Precisión — 500 m – 3 km según la densidad de la infraestructura celular
  • Disparadores — cambio de torre, activación del GPS por otras aplicaciones, cambio de Wi-Fi
  • Permiso — iOS 13+ requiere Siempre para el funcionamiento de SLC en segundo plano
  • Consumo de energía — 0,1–0,5% por hora frente al 5–10% del GPS continuo
  • Mejor práctica — debouncing de eventos, BGTaskScheduler para procesamiento prolongado

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.

Discutir el proyecto

Lea también