Notificaciones locales en el desarrollo móvil: esencia, tipos y cómo funcionan

Autor: IT Sectr Publicado: 2026-03-19 Tiempo de lectura: 8 min

Una notificación local es un mensaje que la aplicación envía al usuario sin intervención de un servidor remoto. Todos los datos se procesan y muestran directamente en el dispositivo del destinatario. Este mecanismo es adecuado para recordatorios, temporizadores y alarmas cuando la aplicación está en segundo plano o cerrada. Según la Documentación para desarrolladores de Apple, UNUserNotificationCenter proporciona una gestión centralizada de las notificaciones locales en iOS.

Puntos clave

  • Notificación local — un mensaje que se programa y entrega desde el dispositivo sin intervención del servidor
  • Plataformas — Android usa NotificationManager, iOS usa UNUserNotificationCenter
  • Programación — las notificaciones pueden activarse por tiempo, geolocalización o calendario
  • Limitaciones — las notificaciones locales no funcionan entre dispositivos y requieren lógica de sincronización adicional
  • UX — las notificaciones bien configuradas aumentan la participación y devuelven al usuario a la aplicación

¿Qué es una notificación local?

Una notificación local es un mensaje activado que el sistema operativo genera y muestra en el mismo dispositivo donde está instalada la aplicación. A diferencia de las notificaciones push, las locales no pasan por un servidor externo — toda la lógica de programación se ejecuta en el cliente.

Estas notificaciones funcionan independientemente del estado de la aplicación: activa, minimizada o completamente cerrada. El sistema operativo se encarga de la entrega en el momento programado, mientras que el desarrollador solo especifica el contenido y el activador.

El sistema garantiza la entrega de la notificación local incluso sin conexión a la red. Esta es una ventaja clave sobre las notificaciones push, que requieren una conexión a Internet estable y un servidor activo.

Componentes principales de la solicitud

Cada notificación local consta de tres partes: contenido (título, cuerpo, sonido), activador (condición de tiempo o geográfica) e identificador de solicitud. El identificador permite cancelar o actualizar la notificación antes de su entrega.

Un desarrollador puede programar hasta 64 notificaciones locales por aplicación en iOS y un número ilimitado en Android. Esta diferencia se debe a restricciones arquitectónicas de los sistemas operativos.

¿Cómo funcionan las notificaciones locales en iOS y Android?

Ambas plataformas proporcionan sus propias API para trabajar con notificaciones locales. En iOS, el componente central es UNUserNotificationCenter, en Android — NotificationManager. A pesar de las diferentes interfaces, la lógica es la misma: la aplicación crea una solicitud, la registra en el sistema y el SO entrega la notificación en el momento programado.

iOS usa UNCalendarNotificationTrigger para eventos de calendario, UNTimeIntervalNotificationTrigger para intervalos y UNLocationNotificationTrigger para geolocalización. Android ofrece AlarmManager, WorkManager y programación precisa mediante setExact.

Desde Android 12 — SCHEDULE_EXACT_ALARM requiere un permiso especial del usuario. En iOS, el permiso se solicita una vez a través de UNUserNotificationCenter.requestAuthorization, y el usuario elige el nivel de acceso: banners, sonidos, insignias.

Tipos de notificaciones locales

Las notificaciones locales se clasifican por tipo de activador, no por contenido. Cada tipo determina cuándo y en qué condiciones se mostrará la notificación al usuario.

Comparación de activadores por plataforma

En iOS y Android, los tipos de activadores se implementan de manera diferente, aunque la clasificación lógica es la misma. iOS usa UNCalendarNotificationTrigger para fechas, UNTimeIntervalNotificationTrigger para intervalos y UNLocationNotificationTrigger para geolocalización. Android ofrece AlarmManager con setExact y setRepeating, así como WorkManager para tareas diferidas.

Tipo de activadorDescripciónEjemplo
Intervalo de tiempoNotificación N segundos después del inicioTemporizador de cuenta regresiva
Fecha de calendarioNotificación en una fecha y hora específicasRecordatorio de reunión
GeolocalizaciónNotificación al entrar/salir de una regiónRecordatorio en la tienda
InmediatoEntrega instantánea al llamar a la APINotificación de descarga

iOS también admite UNNotificationAttachment — adjuntar una imagen, audio o video al cuerpo de la notificación. Android admite plantillas personalizadas con botones e imágenes grandes mediante NotificationCompat.Style.

La elección del activador depende del escenario: los recordatorios de calendario funcionan mejor con activadores de calendario, los recordatorios geográficos con geolocalización. Los activadores de intervalo son adecuados para eventos recurrentes con un período fijo.

Comportamiento de los activadores en segundo plano

En iOS, las notificaciones locales son entregadas por el sistema incluso cuando la aplicación está cerrada — UNUserNotificationCenter gestiona la cola de forma independiente. En Android, la entrega depende del mecanismo elegido: AlarmManager se activa incluso con la pantalla apagada, mientras que WorkManager tiene en cuenta el ahorro de energía.

Casos de uso en aplicaciones móviles

Las notificaciones locales resuelven tareas donde la infraestructura externa es excesiva o no está disponible. Escenarios principales: recordatorios, temporizadores, consejos de incorporación y acciones diferidas.

  • Recordatorios — una aplicación de calendario crea una notificación local para la fecha del evento especificada
  • Consejos de incorporación — un día después de la instalación, la aplicación muestra un consejo en pantalla
  • Temporizadores — un temporizador de cocina se activa después de un tiempo determinado incluso con la aplicación cerrada
  • Progreso de operaciones — notificación sobre la descarga completada o exportación de datos

Las investigaciones de Localytics muestran que las aplicaciones que usan recordatorios locales retienen un 35% más de usuarios en la primera semana después de la instalación. Esto convierte a las notificaciones locales en una poderosa herramienta de incorporación.

Es importante no abusar de la frecuencia — el sistema agrupa las notificaciones de la misma aplicación y el usuario puede desactivar todas las notificaciones locales si se vuelven molestas. La frecuencia óptima es de no más de 2–3 notificaciones al día para eventos no críticos.

Ejemplo de programación en Android

Para programar una notificación local en Android, usa NotificationManager junto con AlarmManager. En Android 8+, primero debes crear un canal de notificaciones, de lo contrario la notificación no se mostrará.

kotlin
val channelId = "reminder_channel"
val notificationId = "task_reminder_42"

val channel = NotificationChannel(
    channelId,
    "Recordatorios",
    NotificationManager.IMPORTANCE_HIGH
).apply {
    description = "Canal para recordatorios de tareas"
}

val manager = getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)

val intent = Intent(this, ReminderReceiver::class.java).apply {
    putExtra("notification_id", notificationId)
    putExtra("channel_id", channelId)
}

val pendingIntent = PendingIntent.getBroadcast(
    this, notificationId.hashCode(),
    intent, PendingIntent.FLAG_UPDATE_CURRENT
)

val alarmManager = getSystemService(AlarmManager::class.java)
alarmManager.setExact(
    AlarmManager.RTC_WAKEUP,
    triggerTimeMillis,
    pendingIntent
)

En Android 12+, verifica el permiso SCHEDULE_EXACT_ALARM antes de llamar a setExact. Si el permiso no está concedido — usa setWindow, que garantiza la entrega dentro de una ventana de tiempo.

Manejo en BroadcastReceiver

Cuando AlarmManager se activa, el sistema envía un Intent de difusión que es recibido por BroadcastReceiver. Dentro de él, debes crear y mostrar la notificación a través de NotificationManager. Asegúrate de que PendingIntent use FLAG_UPDATE_CURRENT, de lo contrario las notificaciones antiguas seguirán usando un Intent desactualizado cuando los datos cambien.

Ejemplo de programación en iOS

En iOS, las notificaciones locales se crean a través de UNUserNotificationCenter usando UNMutableNotificationContent y uno de los activadores. Antes de programar, debes solicitar permiso al usuario.

swift
import UserNotifications

let center = UNUserNotificationCenter.current()

center.requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
    guard granted else { return }
}

let content = UNMutableNotificationContent()
content.title = "Recordatorio de tarea"
content.body = "No olvides completar el informe antes de las 18:00"
content.sound = .default
content.userInfo = ["task_id": "42"]

let trigger = UNTimeIntervalNotificationTrigger(
    timeInterval: 3600,
    repeats: false
)

let request = UNNotificationRequest(
    identifier: "task_reminder_42",
    content: content,
    trigger: trigger
)

center.add(request)

iOS admite hasta 64 solicitudes simultáneas de notificaciones locales. Si se supera el límite, el sistema rechaza nuevas solicitudes hasta que las activas se entreguen o cancelen. Usa getPendingNotificationRequests para verificar la cola actual.

Manejo de la respuesta del delegado

Cuando un usuario interactúa con una notificación local en iOS, se llama al método userNotificationCenter:didReceive response del delegado UNUserNotificationCenterDelegate. Este método proporciona el identificador de solicitud, actionIdentifier (qué botón se presionó) y userInfo personalizado. Esto permite distinguir entre una simple apertura de notificación y la pulsación de un botón de acción específico.

Mejores prácticas para notificaciones locales

Para que las notificaciones locales sean útiles y no molesten al usuario, sigue varias reglas clave. Primero: controla la frecuencia — no más de 2–3 notificaciones al día para eventos no críticos, de lo contrario el usuario desactivará todas las notificaciones de la aplicación.

Segundo: dale al usuario la opción de elegir. Añade en la interfaz la posibilidad de desactivar ciertos tipos de notificaciones locales. En Android, usa un NotificationChannel separado con importancia baja; en iOS, usa una categoría separada en la configuración de la aplicación.

Tercero: relevancia contextual — la notificación debe aparecer cuando el usuario la necesita. Los activadores geográficos son ideales para recordatorios cerca de casa, los de calendario para reuniones, los de intervalo para actividades regulares como beber agua o estirarse. No mezcles tipos innecesariamente.

Cuarto: prueba en dispositivos reales. El simulador de iOS no emula todos los escenarios de entrega de notificaciones locales, especialmente en segundo plano. En Android, usa adb shell dumpsys notification para verificar la cola de notificaciones programadas y sus parámetros. Quinto: siempre proporciona al usuario la posibilidad de desactivar las notificaciones a través de la interfaz de la aplicación — este es un requisito obligatorio de UX y de las directrices de revisión de la App Store.

Preguntas frecuentes

¿Cuál es la diferencia entre una notificación local y una push?

Una notificación local se programa y entrega desde el dispositivo sin intervención del servidor. Una notificación push requiere un servicio externo (FCM, APNS) y conexión a Internet. Las locales funcionan sin conexión, las push solo con acceso a la red.

¿Cuántas notificaciones locales se pueden programar?

iOS limita a 64 solicitudes programadas simultáneamente. Android no tiene un límite estricto, pero más de 500 notificaciones pueden reducir el rendimiento del sistema y afectar el tiempo de entrega.

¿Se puede cancelar una notificación local después de programarla?

Sí, en iOS usa removePendingNotificationRequests con el identificador de solicitud. En Android, llama a NotificationManager.cancel o cancela el PendingIntent a través de AlarmManager. Un identificador único es obligatorio para la cancelación.

¿Se necesita permiso del usuario para las notificaciones locales?

En iOS, el permiso es obligatorio a través de requestAuthorization. En Android 13+ (Tiramisu), también se requiere el permiso POST_NOTIFICATIONS. Las versiones anteriores de Android no requieren permiso explícito para notificaciones locales.

¿Cómo agregar botones a una notificación local?

En iOS, crea UNNotificationAction y agrégalo a UNNotificationCategory. En Android, usa NotificationCompat.Builder.addAction con un PendingIntent dirigido a BroadcastReceiver. Cada botón activa una acción separada en la aplicación.

Resumen

  • Notificaciones locales — mensajes que se programan y entregan desde el dispositivo sin infraestructura de servidor
  • UNUserNotificationCenter — la API principal para notificaciones locales en iOS
  • NotificationManager — la API principal para notificaciones locales en Android
  • Tipos de activadores — intervalo de tiempo, fecha de calendario, geolocalización y entrega inmediata
  • Límites — iOS limita a 64 solicitudes programadas, Android no tiene límite estricto
  • Permisos — iOS y Android 13+ requieren consentimiento explícito del usuario para las notificaciones
  • Sin conexión — las notificaciones locales funcionan sin conexión a Internet, lo que las hace más fiables que las push

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