Background Modes son un conjunto de capacidades declarables de iOS que permiten a una aplicación continuar ejecutando código después de pasar al segundo plano. Cada modo corresponde a un tipo específico de tarea: audio, geolocalización, VoIP, Bluetooth, fetch y processing. Según Apple, 2026, el uso incorrecto de Background Modes es una de las causas frecuentes de rechazo de aplicaciones durante la revisión en App Store.
Puntos clave
Background Modes son capacidades del proyecto Xcode que declaran la intención de la aplicación de realizar tipos específicos de operaciones en segundo plano. A diferencia de Android, donde una aplicación puede iniciar cualquier Service en segundo plano, iOS requiere una declaración explícita del modo en Info.plist. Cada modo tiene reglas de uso estrictas y es verificado por Apple durante la revisión.
Cuando una aplicación pasa a segundo plano, iOS la suspende en 3–5 segundos. Si la aplicación declara un Background Mode y utiliza activamente la API correspondiente (por ejemplo, AVAudioSession para audio), el sistema la coloca en un modo de ejecución especial. La aplicación permanece en memoria y puede ejecutar código limitado por el tipo de modo.
iOS admite los siguientes Background Modes: Audio, Location, VoIP, Bluetooth LE (accesorios BLE), Background Fetch (actualizaciones periódicas), Background Processing (tareas prolongadas), External Accessory Communication, Push to Talk (PTT) y HealthKit. Cada modo requiere justificación en la descripción de la aplicación.
| Modo | Clave Info.plist | Propósito | Versión iOS |
|---|---|---|---|
| Audio | audio | Audio en segundo plano, AirPlay | 4.0+ |
| Location | location | Seguimiento de ubicación | 4.0+ |
| VoIP | voip | Notificaciones push VoIP | 4.0+ |
| BLE | bluetooth-central | Trabajo con dispositivos BLE | 7.0+ |
| Fetch | fetch | Descarga periódica de datos | 7.0+ |
| Processing | processing | Tareas prolongadas en segundo plano | 13.0+ |
| Push to Talk | push-to-talk | Voz push-to-talk | 16.0+ |
Audio Background Mode es el modo más común, utilizado por reproductores de música, aplicaciones de podcasts y servicios de audio. La aplicación puede continuar la reproducción de audio, controlarse a través del Centro de Control y aparecer en la pantalla de bloqueo. Para activarlo, basta con configurar AVAudioSession con la categoría .playback.
Para que el audio funcione en segundo plano, es necesario configurar AVAudioSession y activarla. La categoría .playback indica al sistema que la aplicación está reproduciendo audio y debe permanecer activa en segundo plano. Sin esta configuración, el audio se detendrá 5–10 segundos después de minimizar la aplicación.
import AVFoundation
func configureAudioSession() {
let session = AVAudioSession.sharedInstance()
do {
try session.setCategory(
.playback,
mode: .default,
options: []
)
try session.setActive(true)
} catch {
print("Error de sesión de audio: \(error)")
}
}
Para integrarse con Centro de Control y la pantalla de bloqueo, es necesario configurar MPRemoteCommandCenter. Maneja los comandos Reproducir, Pausa, Siguiente y Anterior. También es necesario actualizar MPNowPlayingInfoProperty para mostrar metadatos: nombre de la pista, artista, carátula y progreso de reproducción.
A partir de iOS 14, el Audio Background Mode también admite Picture in Picture para vídeo. La aplicación puede seguir mostrando vídeo en una ventana flotante al minimizarse. Para activarlo, use AVPictureInPictureController con AVPlayerLayer. Este modo solo funciona si la aplicación reproduce una pista de audio.
Location Background Mode permite a la aplicación recibir actualizaciones de ubicación en segundo plano. Se utiliza en navegadores, rastreadores de fitness, aplicaciones de entrega y redes sociales. Sin este modo, la aplicación recibe la ubicación solo una vez al pasar a segundo plano, tras lo cual las actualizaciones se detienen.
CLLocationManager admite varias estrategias de seguimiento: cambios significativos de ubicación, seguimiento estándar y monitoreo de regiones. Para trabajar en segundo plano con máxima precisión, use allowsBackgroundLocationUpdates = true y pausesLocationUpdatesAutomatically = false.
El seguimiento continuo de ubicación en segundo plano es uno de los escenarios que más energía consume. iOS ajusta automáticamente la frecuencia de actualizaciones según la velocidad de movimiento: al caminar, actualizaciones cada 10–30 segundos; al conducir, cada 1–5 segundos. Para navegación, use desiredAccuracy = kCLLocationAccuracyBestForNavigation.
let locationManager = CLLocationManager()
locationManager.requestAlwaysAuthorization()
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.activityType = .fitness
locationManager.startUpdatingLocation()
El modo significant-change location funciona sin Location Background Mode — el sistema activa la aplicación solo cuando las coordenadas cambian significativamente (generalmente 500 m o más). No requiere GPS constante, ahorrando batería. Adecuado para aplicaciones meteorológicas que actualizan datos cuando el usuario se desplaza.
Bluetooth LE Background Mode permite a la aplicación interactuar con dispositivos BLE en segundo plano. Se utiliza en pulseras de fitness, sensores médicos, dispositivos Smart Home y navegación por beacons. El modo se divide en dos subtipos: bluetooth-central (la aplicación se conecta a dispositivos) y bluetooth-peripheral (la aplicación actúa como dispositivo).
Una aplicación que actúa como Central puede escanear y conectarse a dispositivos BLE en segundo plano. Para ello, especifique bluetooth-central en Background Modes y llame a CBCentralManager.scanForPeripherals con la opción CBCentralManagerScanOptionAllowDuplicatesKey. En segundo plano, el escaneo funciona con frecuencia reducida — el sistema puede retrasar la detección para ahorrar energía.
Una aplicación que actúa como Peripheral puede anunciar servicios y responder a solicitudes de otros dispositivos. El modo bluetooth-peripheral permite que la aplicación permanezca visible para otros dispositivos BLE incluso en segundo plano. Se utiliza en aplicaciones HealthKit y soluciones IoT.
El monitoreo de iBeacon funciona en segundo plano sin permisos adicionales — el propio sistema rastrea la entrada y salida de regiones Beacon. Sin embargo, para escanear el contenido del Beacon (UUID de proximidad, major, minor) se necesita permiso de Bluetooth y bluetooth-central Background Mode. Use CLLocationManager con CLBeaconRegion para el monitoreo.
VoIP Background Mode está diseñado para aplicaciones de comunicación por voz (Skype, Zoom, WhatsApp). Este modo permite que la aplicación permanezca conectada al servidor para recibir llamadas entrantes. A partir de iOS 8, se utiliza PushKit — un framework que maneja notificaciones push del servidor VoIP sin involucrar a APNs.
PushKit es el único mecanismo que garantiza la entrega de notificaciones VoIP al dispositivo. Al recibir una notificación PushKit, el sistema activa la aplicación, incluso si fue terminada. La aplicación debe establecer una conexión con el servidor en 30 segundos y mostrar una notificación local para la llamada entrante.
import PushKit
class VoIPHandler: NSObject, PKPushRegistryDelegate {
func pushRegistry(
_ registry: PKPushRegistry,
didReceiveIncomingPushWith payload: PKPushPayload,
for type: PKPushType,
completion: @escaping () -> Void
) {
let caller = payload.dictionaryPayload["caller"] as! String
reportIncomingCall(from: caller)
completion()
}
}
PushKit no puede utilizarse para notificaciones ordinarias — solo para VoIP, comunicaciones de watchOS y proveedores de archivos. Apple verifica esto durante la revisión. El uso indebido conduce al rechazo de la aplicación. A partir de iOS 13, PushKit solo entrega la notificación — es obligatorio llamar a CXProvider (CallKit) para mostrar la pantalla de llamada.
Background Fetch y Background Processing son modos para actualizaciones de contenido en segundo plano y tareas prolongadas. Fetch es para actualizaciones periódicas cortas (hasta 30 s), Processing es para tareas largas (hasta 10 min) con condiciones (Wi-Fi, carga). Processing solo está disponible en iOS 13+.
El modo Fetch permite al sistema activar periódicamente la aplicación para descargar contenido nuevo. El sistema analiza el comportamiento del usuario y selecciona el momento óptimo. La aplicación debe llamar al completion handler en 30 segundos. Fetch es adecuado para aplicaciones de noticias, feeds de redes sociales y clima.
BGProcessingTask está diseñada para tareas que pueden ejecutarse sin intervención del usuario: limpieza de caché, sincronización de grandes bases de datos, procesamiento de archivos multimedia. El sistema inicia la tarea solo en condiciones favorables — dispositivo cargando, conectado a Wi-Fi, no en modo de bajo consumo. Disponible hasta 10 minutos.
Para BGProcessingTask, debe especificar requiresExternalPower y requiresNetworkConnectivity. El sistema puede aplazar la ejecución indefinidamente si no se cumplen las condiciones. A diferencia de BGAppRefreshTask, que debe ejecutarse al menos una vez al día, Processing puede no ejecutarse durante semanas si el dispositivo rara vez se carga.
Apple revisa estrictamente el uso de Background Modes durante la revisión de aplicaciones. La regla principal: cada modo habilitado debe estar justificado por la funcionalidad de la aplicación. Si una aplicación declara Location Mode pero no usa geolocalización, será rechazada con el requisito de eliminar la capacidad.
Las infracciones más comunes: Location Mode sin necesidad explícita (la aplicación solicita acceso “Siempre” para mostrar anuncios), Audio Mode sin reproducción de audio en segundo plano, VoIP sin PushKit, BLE Mode sin dispositivos Bluetooth. Apple puede rechazar la aplicación incluso en la etapa de actualización si el modo ya no se utiliza.
Al enviar para revisión, proporcione una justificación específica para cada modo en las Notas. Por ejemplo, “Location Background Mode se utiliza para rastrear la ruta del usuario en la función de fitness”. Sin explicación, el revisor puede rechazar la aplicación. Para funciones confidenciales (VoIP), Apple puede solicitar una cuenta de prueba.
Utilice el conjunto mínimo necesario de modos. Si su aplicación necesita descargar datos en segundo plano una vez por hora — no habilite Location Mode, use Fetch o BGAppRefreshTask. Los modos adicionales no solo conducen al rechazo, sino que también crean una impresión negativa: el usuario ve en Configuración que la aplicación usa geolocalización en segundo plano.
Preguntas frecuentes
No hay límite en la cantidad, pero cada modo debe estar justificado por la funcionalidad de la aplicación. Activar todos los modos sin necesidad es una razón garantizada de rechazo durante la revisión. Un límite práctico es 2–3 modos por aplicación, de lo contrario el usuario verá muchas solicitudes de permisos.
Use UIApplication.shared.applicationState — la aplicación puede verificar si está en segundo plano (state == .background). También puede observar las notificaciones UIApplication.didEnterBackgroundNotification y willEnterForegroundNotification para cambiar el comportamiento.
Audio — reproducción de sonido a través del altavoz o auriculares. AirPlay — transmisión de audio y vídeo a Apple TV y otros dispositivos AirPlay. En la práctica, Audio Mode cubre ambos escenarios ya que AirPlay utiliza la sesión de audio. No se requiere un modo AirPlay separado desde iOS 7+.
Sí, para esto use requestWhenInUseAuthorization() en lugar de requestAlwaysAuthorization(). La aplicación recibirá ubicación solo en primer plano. Si necesita seguimiento breve en segundo plano, llame a startUpdatingLocation() y deténgalo en willResignActive.
Cada modo aumenta el consumo de energía. Location Mode es el más exigente, puede reducir la duración de la batería en un 30–50% con seguimiento continuo. Audio Mode es moderado (15–20%). Fetch y Processing son mínimos (2–5%). BLE Mode es bajo (5–10%) gracias a la eficiencia energética de Bluetooth LE.
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