CoreLocation para Swift: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es CoreLocation y para qué sirve?

\n

CoreLocation es un framework integrado de Apple para las plataformas iOS, macOS, watchOS y tvOS. Proporciona a los desarrolladores acceso a los medios hardware y software para determinar la ubicación del dispositivo. A diferencia de las bibliotecas de terceros, CoreLocation no requiere instalación a través de gestores de paquetes (CocoaPods, SPM) — es parte del SDK estándar.

\n

Funcionalidades principales del framework:

\n
    \n
  • Determinación de coordenadas geográficas actuales (latitud y longitud).
  • \n
  • Seguimiento de cambios de ubicación en tiempo real.
  • \n
  • Geocercas (Geofencing) — recepción de notificaciones al entrar/salir de un área definida.
  • \n
  • Determinación de dirección (brújula) y velocidad de movimiento.
  • \n
  • Geocodificación inversa (conversión de coordenadas a dirección) y geocodificación directa (dirección a coordenadas).
  • \n
\n

La biblioteca es indispensable para aplicaciones de navegación, servicios de entrega, rastreadores de fitness, redes sociales con geolocalización y cualquier otra aplicación que requiera conocer la posición del usuario.

\n\n

Instalación de CoreLocation

\n

Dado que CoreLocation es parte del sistema operativo, no es necesario instalarlo a través de pip o npm. Para usarlo, basta con importar el módulo en el código.

\n

Importante: Para trabajar con geolocalización, es necesario agregar una descripción de uso en el archivo Info.plist de su proyecto. Sin esto, la aplicación fallará al intentar solicitar permiso.

\n

Agregue una de las siguientes claves (dependiendo de cuándo necesite la ubicación):

\n
    \n
  • NSLocationWhenInUseUsageDescription — para acceso solo durante el uso activo de la aplicación.
  • \n
  • NSLocationAlwaysAndWhenInUseUsageDescription — para acceso permanente (incluso en segundo plano).
  • \n
\n

Como valor, indique una cadena que se mostrará al usuario en el diálogo de solicitud de permiso (por ejemplo, "La aplicación necesita acceso a la geolocalización para mostrar cafeterías cercanas").

\n\n

Inicio rápido con ejemplo de código

\n

Veamos un ejemplo mínimo para obtener las coordenadas actuales del usuario.

\n
import CoreLocation\n\nclass ViewController: UIViewController, CLLocationManagerDelegate {\n\n    let locationManager = CLLocationManager()\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        locationManager.delegate = self\n        locationManager.requestWhenInUseAuthorization()\n        locationManager.startUpdatingLocation()\n    }\n\n    // MARK: - CLLocationManagerDelegate\n    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {\n        guard let location = locations.last else { return }\n        print("Latitud: \\(location.coordinate.latitude)")\n        print("Longitud: \\(location.coordinate.longitude)")\n        // Detenemos la actualización para no agotar la batería\n        locationManager.stopUpdatingLocation()\n    }\n\n    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {\n        print("Error al obtener la ubicación: \\(error.localizedDescription)")\n    }\n}\n
\n

Este código crea un gestor, solicita permiso al usuario y comienza el seguimiento. Una vez obtenidas las coordenadas, se muestran en la consola.

\n\n

Métodos/funciones principales de CoreLocation

\n

A continuación se presentan los métodos y propiedades clave de la clase CLLocationManager, así como de clases auxiliares.

\n\n

1. requestWhenInUseAuthorization()

\n

Descripción: Solicita al usuario permiso para acceder a la geolocalización solo durante el uso de la aplicación (aplicación activa en pantalla).

\n

Parámetros: Ninguno.

\n

Ejemplo:

\n
let manager = CLLocationManager()\nmanager.requestWhenInUseAuthorization()\n
\n\n

2.

Recommendations