CoreBluetooth para Swift: Guía completa de Bluetooth Low Energy
1. ¿Qué es y para qué sirve?
CoreBluetooth es un framework de Apple que proporciona una API para interactuar con dispositivos mediante el protocolo Bluetooth Low Energy (BLE, Bluetooth 4.0 y superior). Forma parte de iOS SDK y macOS SDK, lo que lo convierte en una herramienta nativa para el desarrollo en el ecosistema Apple. A diferencia del Bluetooth clásico, BLE está diseñado para un consumo mínimo de energía, ideal para dispositivos portátiles, sensores, cerraduras inteligentes, rastreadores de actividad física y gadgets IoT.
¿Para qué sirve CoreBluetooth? Si estás desarrollando una app para iPhone que necesita intercambiar datos con un pulsómetro, controlar una bombilla inteligente o recibir lecturas de una estación meteorológica, este framework es lo que necesitas. Se encarga de todo el trabajo de bajo nivel: escanear el entorno, establecer conexiones, descubrir servicios y características, y leer/escribir datos. CoreBluetooth funciona en dos roles: Central (el dispositivo que busca y se conecta) y Peripheral (el dispositivo que se anuncia y proporciona datos). En este artículo nos centraremos en el rol Central, el más utilizado en aplicaciones.
Es importante saber que CoreBluetooth no es una librería externa, sino un framework del sistema. No necesita instalarse mediante un gestor de paquetes, está disponible "de serie" en Xcode. Sin embargo, para que funcione correctamente, debes añadir una descripción del uso de Bluetooth en Info.plist (la clave NSBluetoothAlwaysUsageDescription para iOS 13+ o NSBluetoothPeripheralUsageDescription para versiones anteriores).
2. Configuración
CoreBluetooth no requiere instalación mediante pip ni CocoaPods. Es parte de la librería estándar de Apple. Para añadir el framework a tu proyecto:
- Abre tu proyecto en Xcode.
- Selecciona el target de tu aplicación.
- Ve a la pestaña "General" → "Frameworks, Libraries, and Embedded Content".
- Haz clic en "+" y selecciona
CoreBluetooth.framework.
O simplemente añade el import en tu código:
import CoreBluetooth
Para trabajar con Bluetooth en el simulador de iOS 14+ y macOS 11+ también funciona, pero los dispositivos BLE reales solo están disponibles en un dispositivo físico. En el simulador solo puedes probar la lógica de escaneo y conexión, no la transferencia de datos.
3. Inicio rápido — ejemplo mínimo funcional
A continuación tienes un código mínimo que inicializa el dispositivo central (Central Manager) y comienza a escanear todos los dispositivos BLE disponibles. El resultado se muestra en la consola.
import UIKit
import CoreBluetooth
class ViewController: UIViewController, CBCentralManagerDelegate {
var centralManager: CBCentralManager!
override func viewDidLoad() {
super.viewDidLoad()
// Inicializamos el Central Manager con su delegado
centralManager = CBCentralManager(delegate: self, queue: nil)
}
// MARK: - CBCentralManagerDelegate
func centralManagerDidUpdateState(_ central: CBCentralManager) {
switch central.state {
case .poweredOn:
print("Bluetooth activado. Iniciando escaneo...")
// Empezamos a escanear todos los dispositivos
centralManager.scanForPeripherals(withServices: nil, options: nil)
case .poweredOff:
print("Bluetooth desactivado")
case .unauthorized:
print("La app no tiene autorización para Bluetooth")
case .unknown:
print("Estado de Bluetooth desconocido")
case .unsupported:
print("El dispositivo no soporta BLE")
case .resetting:
print("Bluetooth se está reiniciando")
@unknown default:
print("Estado desconocido")
}
}
func centralManager(_ central: CBCentralManager, También en la biblioteca
Helmet para JavaScript (Node.js): guía completa con ejemplos
Swinject para Swift: guía completa con ejemplos
ts-mockito para TypeScript: guía completa con ejemplos
Limitación de Tasa en C# (.NET): Guía Completa de la Biblioteca System.Threading.RateLimiting