Las notificaciones Push son mensajes enviados por el servidor a un dispositivo móvil incluso cuando la aplicación está cerrada. Según Google Firebase, 2024, las notificaciones Push se procesan a través de servicios especializados — FCM en Android y APNS en iOS, que admiten entrega en tiempo real a millones de dispositivos simultáneamente. Se han convertido en una parte integral de la experiencia del usuario en las aplicaciones móviles modernas.
Puntos clave
Las notificaciones Push son mensajes cortos que el servidor de la aplicación envía al dispositivo del usuario sin una solicitud explícita. Aparecen como banners, insignias en el icono o señales sonoras, atrayendo la atención del usuario hacia la aplicación e informándole sobre eventos importantes.
Una notificación Push consta de un título, un cuerpo del mensaje y datos opcionales (payload). A diferencia de los SMS, las notificaciones Push son gratuitas para el usuario y se entregan a través de la infraestructura de servicios en la nube — FCM para Android y APNS para iOS. Los objetivos principales de las notificaciones Push son: aumentar la participación, informar sobre eventos y devolver al usuario a la aplicación.
Las estadísticas de uso muestran que las notificaciones Push correctamente configuradas aumentan la retención de la aplicación entre un 30 y un 60%. Sin embargo, la frecuencia excesiva de notificaciones provoca cancelaciones de suscripción — más del 60% de los usuarios desactivan las notificaciones si se envían más de tres veces al día.
Un sistema Push incluye tres componentes: el servidor de la aplicación, el servicio de plataforma (FCM/APNS) y la aplicación cliente en el dispositivo. El servidor envía una solicitud al servicio de plataforma, que entrega la notificación al dispositivo de destino a través de una conexión persistente con el sistema operativo.
El mecanismo de entrega de las notificaciones Push se basa en una conexión persistente entre el dispositivo y el servicio de plataforma. El sistema operativo mantiene un canal de comunicación cifrado a través del cual pasan todos los mensajes Push.
En el primer inicio, la aplicación solicita permiso para enviar notificaciones y recibe un token único de dispositivo de FCM o APNS. Este token es una cadena de hasta 4 KB que identifica únicamente la instancia de la aplicación. El token cambia cuando se reinstala la aplicación o se restaura el dispositivo desde una copia de seguridad.
class FirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(
message: RemoteMessage
) {
showNotification(message.notification)
}
}
El servidor de la aplicación envía una solicitud HTTP a la API de FCM o a la API de APNS, especificando el token de destino, el título, el cuerpo y los datos adicionales. El servicio de plataforma responde con un estado de entrega: éxito, token inválido (el dispositivo desinstaló la aplicación) o limitación de velocidad (frecuencia de envío excedida).
fetch("https://fcm.googleapis.com/fcm/send", {
method: "POST",
headers: {
"Authorization": "key=AIzaSy...",
"Content-Type": "application/json"
},
body: JSON.stringify({
to: "device_token_here",
notification: {
title: "Nuevo mensaje",
body: "¡Tienes una nueva notificación!"
}
})
})
La elección entre FCM y APNS depende de la plataforma de destino. FCM admite Android e iOS, mientras que APNS solo admite el ecosistema de Apple. Analicemos las diferencias clave importantes para el desarrollo de aplicaciones móviles multiplataforma.
FCM es un servicio de Google que funciona sobre Google Play Services. Admite dos esquemas de entrega: notificaciones con visualización automática y notificaciones de datos que la aplicación maneja por sí misma. FCM es gratuito y no tiene límites en la cantidad de mensajes enviados.
APNS es el servicio de Apple con soporte para archivos adjuntos multimedia (imágenes, vídeo, audio) de hasta 10 MB. El envío a través de APNS requiere un certificado TLS o una clave de autenticación. APNS limita la frecuencia de envío a un solo dispositivo — no más de 150 notificaciones por minuto, tras lo cual se activa la limitación de velocidad.
| Característica | FCM | APNS |
|---|---|---|
| Plataformas | Android, iOS, Web | iOS, macOS, watchOS |
| Requisitos | Google Play Services | Apple Developer Program |
| Multimedia | hasta 4 KB (datos) | hasta 10 MB (adjuntos) |
| Prioridad | normal/alta | inmediata/ahorro de energía |
| Costo | gratuito | gratuito (requiere cuenta) |
Las notificaciones Push se clasifican según el método de visualización y el propósito. Comprender los tipos ayuda a elegir la estrategia correcta para cada escenario de interacción con el usuario.
El tipo más común — una notificación mostrada con un título y un cuerpo. El sistema operativo la muestra automáticamente en la sombra de notificaciones, en la pantalla de bloqueo y como banner. El desarrollador puede configurar el sonido, la vibración, la insignia del icono y los botones de acción para acciones directas (responder, abrir, descartar).
Las notificaciones de datos contienen solo payload sin visualización. La aplicación las procesa en segundo plano: sincroniza datos, actualiza la memoria caché o inicia descargas. En Android, las notificaciones de datos se entregan de forma fiable; en iOS, solo cuando la aplicación está activa o mediante background fetch.
Los sistemas operativos móviles modernos admiten notificaciones enriquecidas y multimedia con imágenes, GIF, vídeo y audio. En iOS, esto se implementa a través de UNNotificationAttachment; en Android, mediante BigPictureStyle e InboxStyle para personalizar la apariencia de la notificación en la sombra del sistema.
Las notificaciones silenciosas no se muestran al usuario y se utilizan para la sincronización en segundo plano. En iOS, tienen alta prioridad para tareas como la actualización de datos antes de abrir la aplicación. Android las trata como notificaciones de datos con prioridad mínima.
La configuración de notificaciones Push requiere acciones a nivel de infraestructura, servidor y código del cliente. Veamos el proceso típico para un proyecto móvil multiplataforma.
Para Android, es necesario crear un proyecto en la Firebase Console, agregar google-services.json al proyecto y configurar FirebaseMessagingService. El token del dispositivo se obtiene a través de FirebaseInstanceId o FirebaseMessaging.getInstance().token, tras lo cual se envía al servidor mediante API en el primer inicio o cuando cambia.
Para iOS, se requiere una suscripción al Apple Developer Program, la creación de un certificado Push o clave APNS en el Developer Portal, y la activación de la capacidad Push Notifications en Xcode. El registro de notificaciones se realiza a través de UIApplication.shared.registerForRemoteNotifications, recibiendo el deviceToken en AppDelegate.
import UIKit
import UserNotifications
@main
class AppDelegate: UIResponder,
UIApplicationDelegate {
func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken
deviceToken: Data
) {
let token = deviceToken
.map { String.format("%02x", $0) }
.joined()
// enviar token a tu servidor
}
}
En el lado del servidor, las notificaciones Push se envían a través de la API REST o el Admin SDK. FCM utiliza Firebase Admin SDK (disponible para Node.js, Java, Python, Go), mientras que APNS utiliza librerías pusher (pushy para Java, apn2 para Node.js). Se recomienda almacenar los tokens en una base de datos con una marca de tiempo de la última actualización.
La seguridad de las notificaciones Push es críticamente importante, ya que a través de ellas pueden transmitirse datos confidenciales. Ambas plataformas proporcionan mecanismos de protección básicos, pero el desarrollador debe utilizarlos correctamente.
El payload de una notificación Push puede contener datos personales de los usuarios: nombres, montos de transacciones, enlaces a mensajes. Aunque el canal de comunicación entre FCM/APNS y el dispositivo está cifrado, los datos pueden ser interceptados a nivel de aplicación si un software de terceros intercepta la notificación. Se recomienda cifrar el payload sensible en el servidor con AES-256 y descifrarlo en el dispositivo con una clave almacenada en Keychain (iOS) o EncryptedSharedPreferences (Android).
El token del dispositivo es un identificador de sesión que puede verse comprometido si el dispositivo es hackeado o el tráfico es interceptado. El servidor de la aplicación debe validar los tokens antes de enviar: verificarlos con la base de datos, rastrear tokens inactivos y eliminarlos en errores repetidos de InvalidToken. FCM y APNS devuelven el estado InvalidRegistration para tokens no válidos — no lo ignore.
Sin control de frecuencia, las notificaciones Push pueden convertirse en una herramienta de spam que molesta a los usuarios y reduce la retención. Establezca límites en el servidor: no más de 5 notificaciones por hora para un solo usuario y no más de 3 mensajes idénticos. Para notificaciones transaccionales (confirmación de pedido, cambio de contraseña), los límites pueden ser más altos — hasta 10 por hora, ya que contienen información críticamente importante. Utilice limitación de velocidad a nivel de API de envío para que un atacante no pueda enviar notificaciones masivas a través de su servidor.
Preguntas frecuentes
Sí, pero la conexión directa a APNS no es compatible con Android — los dispositivos sin Google Play Services utilizan alternativas como Huawei Mobile Services (HMS) y conexiones WebSocket propias. Sin embargo, FCM sigue siendo el estándar para la mayoría de las aplicaciones debido a su gratuidad y fiabilidad.
FCM y APNS almacenan la última notificación en sus servidores y la entregan cuando se restablece la conexión. Cada dispositivo almacina solo la última notificación de cada aplicación, por lo que los mensajes intermedios se pierden durante una ausencia prolongada de red.
Las razones más comunes son un certificado Push vencido (válido por 1 año), un token de dispositivo no válido, notificaciones desactivadas en la configuración o el modo de bajo consumo activado. Verifique el certificado en Apple Developer Console y asegúrese de que la aplicación solicite permiso a través de UNUserNotificationCenter.
En Android, use PendingIntent en NotificationCompat.Builder con seguimiento de apertura a través de Intent. En iOS, use el método UNUserNotificationCenterDelegate.userNotificationCenter(_:didReceive:withCompletionHandler:). FCM proporciona informes de entrega y apertura para cada notificación enviada.
Minimamente — las notificaciones Push no mantienen una conexión constante; el sistema operativo utiliza un único canal del sistema para todas las aplicaciones, lo que minimiza el consumo total de energía. El envío frecuente (cada 5 minutos) consume más energía al activar el dispositivo desde el modo de suspensión. Las notificaciones silenciosas en iOS consumen más batería debido a la activación de la aplicación en segundo plano para procesar los datos recibidos.
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