Notification Action — botones interactivos y campos de entrada que aparecen directamente en una notificación push y permiten al usuario realizar una acción sin abrir la aplicación. Es un elemento clave de la experiencia de usuario que acorta el camino hacia la pantalla de destino. Según Android Developers, 2025, Notification Action aumenta la participación de los usuarios hasta un 40% al reducir la fricción en la interacción.
Puntos clave
Notification Action es un elemento interactivo de interfaz añadido a una notificación push para realizar una acción específica. El usuario puede responder a un mensaje, confirmar una tarea o abrir una pantalla específica sin entrar en la aplicación. Las acciones se muestran como botones debajo del texto de la notificación o en una vista expandida al deslizar.
El objetivo principal de Notification Action es reducir el número de pasos para que el usuario alcance su objetivo. En lugar de abrir la aplicación y navegar a la pantalla deseada, el usuario presiona un solo botón. Las investigaciones muestran que las aplicaciones con notificaciones interactivas demuestran una participación entre un 25 y un 40% mayor en comparación con las notificaciones simples.
En Android, las Notification Actions se muestran como botones de icono en vista compacta y botones de texto en modo expandible. En iOS, las acciones aparecen al presionar prolongadamente la notificación o deslizar hacia la izquierda. Cada plataforma tiene sus propias recomendaciones sobre el número de acciones: Android recomienda no más de 3, iOS no más de 4.
| Plataforma | Máx. acciones | Método de visualización | Tipos de acciones |
|---|---|---|---|
| Android | 3 | Iconos + Texto | Botones, Entrada de texto |
| iOS | 4 | Presión larga / Deslizar | Botones, Entrada de texto |
En Android, las Notification Actions se crean mediante NotificationCompat.Builder usando el método addAction(). Cada acción contiene un icono, texto y PendingIntent que se activa al pulsarla. A partir de Android 7.0 (API 24), se admite la entrada directa de texto mediante RemoteInput.
Para crear un botón en una notificación, es necesario definir un PendingIntent que se lanzará al pulsarlo. PendingIntent puede abrir una Activity, iniciar un Service o un BroadcastReceiver. El icono de la acción debe ser monocromático y cumplir con Material Design.
val acceptIntent = Intent(context, AcceptActionReceiver::class.java)
acceptIntent.putExtra("notification_id", notificationId)
val acceptPendingIntent = PendingIntent.getBroadcast(
context, requestCode,
acceptIntent, PendingIntent.FLAG_UPDATE_CURRENT
)
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("Solicitud de confirmación")
.setContentText("Confirme la realización de la tarea")
.addAction(R.drawable.ic_accept, "Confirmar", acceptPendingIntent)
.build()
Para escenarios que requieren entrada de texto (por ejemplo, responder a un mensaje), Android proporciona RemoteInput. El usuario ingresa texto directamente en la notificación y la aplicación lo recibe sin abrir una Activity. RemoteInput es compatible con Android 7.0+ y requiere manejo explícito en un BroadcastReceiver o Service.
val remoteInput = RemoteInput.Builder("reply_input")
.setLabel("Ingrese respuesta")
.build()
val replyAction = NotificationCompat.Action.Builder(
R.drawable.ic_reply, "Responder", replyPendingIntent
)
.addRemoteInput(remoteInput)
.build()
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
.addAction(replyAction)
.build()
Cuando se pulsa una acción, el sistema lanza el PendingIntent especificado. Para recuperar el texto ingresado mediante RemoteInput, llame a RemoteInput.getResultsFromIntent(intent). Se recomienda manejar las acciones en IntentService o WorkManager para no bloquear el hilo de la UI.
En iOS, las Notification Actions se implementan mediante el framework UserNotifications. El desarrollador crea categorías de acciones (UNNotificationCategory) y las registra al iniciar la aplicación. Cada acción se define mediante un objeto UNNotificationAction con un identificador único.
Para añadir acciones a las notificaciones push en iOS, es necesario crear una categoría que agrupe las acciones relacionadas. La categoría se especifica en la carga útil de la notificación mediante el campo category. Al recibir una notificación, el sistema muestra las acciones disponibles de la categoría especificada.
import UserNotifications
class NotificationSetup {
func registerNotificationCategories() {
let approveAction = UNNotificationAction(
identifier: "APPROVE_ACTION",
title: "Aprobar",
options: [.foreground]
)
let declineAction = UNNotificationAction(
identifier: "DECLINE_ACTION",
title: "Rechazar",
options: [.destructive]
)
let category = UNNotificationCategory(
identifier: "REQUEST_CATEGORY",
actions: [approveAction, declineAction],
intentIdentifiers: [],
options: []
)
UNUserNotificationCenter.current()
.setNotificationCategories([category])
}
}
Cuando el usuario pulsa una acción, el sistema llama al método userNotificationCenter:didReceiveNotificationResponse en el delegado de UNUserNotificationCenter. response.actionIdentifier contiene el identificador de la acción realizada. Para la entrada de texto, se usa UNTextInputNotificationAction, que proporciona el texto ingresado por el usuario.
extension AppDelegate: UNUserNotificationCenterDelegate {
func userNotificationCenter(
center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void
) {
switch response.actionIdentifier {
case "APPROVE_ACTION":
Log.d("Action: approved")
case "DECLINE_ACTION":
Log.d("Action: declined")
case UNNotificationDefaultActionIdentifier:
Log.d("Action: opened app")
default:
break
}
completionHandler()
}
}
Notification Action se clasifica por tipo de interacción y escenario de uso. La elección correcta del tipo de acción afecta directamente la experiencia del usuario y la conversión hacia la acción objetivo.
El tipo más común: un botón que abre la aplicación en una pantalla específica. En Android, se usa PendingIntent.getActivity(), en iOS, la opción .foreground de UNNotificationAction. Se utiliza para acciones que requieren una interfaz completa, como ver detalles de un pedido.
Acciones que se ejecutan sin abrir la aplicación. En Android, se usa PendingIntent.getBroadcast() o PendingIntent.getService(). En iOS, la opción .authenticationRequired o sin .foreground. Ejemplos: marcar tarea como completada, dar like a una publicación, añadir a favoritos.
Permite al usuario ingresar texto directamente en la notificación. En Android, se implementa mediante RemoteInput, en iOS, mediante UNTextInputNotificationAction. Se usa para responder mensajes, comentarios, ingresar códigos de confirmación de un solo uso.
Acciones que modifican datos de forma irreversible: eliminación, rechazo, bloqueo. En Android, se resaltan visualmente (color rojo en algunos sistemas), en iOS requieren la opción .destructive. Se recomienda solicitar confirmación para acciones destructivas, por ejemplo mediante un diálogo adicional o un segundo toque.
Una clase separada de acciones: ingreso de texto directamente desde la notificación. En Android, esto se implementa mediante RemoteInput en combinación con PendingIntent. En iOS, se usa UNTextInputNotificationAction, que hereda de UNNotificationAction. Dichas acciones se utilizan para respuestas rápidas en mensajería, ingreso de códigos promocionales, llenado de formularios de comentarios o valoración de calidad de servicio. El texto ingresado se pasa a la aplicación junto con el identificador de la acción. Para el manejo correcto de la entrada de texto en ambas plataformas, es necesario implementar el análisis de los datos ingresados y la validación antes de ejecutar la acción objetivo.
El manejo correcto de Notification Action es crítico para la analítica y la experiencia del usuario. Cada toque debe registrarse y la acción debe ejecutarse de manera confiable incluso si la aplicación estaba cerrada.
Realice un seguimiento de cada toque en Notification Action mediante su sistema de analítica. Firebase Analytics, Mixpanel o Yandex.Metrica permiten registrar el identificador de la acción, la hora del toque y el contexto de la notificación. Estos datos ayudan a optimizar su estrategia de notificaciones y aumentar la participación. Las pruebas A/B con diferentes conjuntos de acciones ayudan a identificar los escenarios de interacción más efectivos con el usuario.
Si la aplicación está cerrada, el sistema aún entrega el Intent o UNNotificationResponse al pulsar una acción. En Android, use un BroadcastReceiver para un manejo garantizado. En iOS, el sistema inicia la aplicación en segundo plano y pasa la respuesta al delegado. Para acciones críticas (confirmación de pago, autorización), agregue un mecanismo de reintento y notifique al usuario sobre la finalización exitosa.
A partir de Android 7.0, el desarrollador puede influir en la apariencia de Notification Action mediante iconos y colores. Los iconos deben ser monocromáticos (canal alfa), de tamaño 24x24 dp. En iOS, la personalización de botones es limitada: se usan colores y fuentes del sistema. Material Design recomienda agrupar las acciones por prioridad: la acción más importante primero, las destructivas al final.
Preguntas frecuentes
Android recomienda no más de 3 acciones, iOS hasta 4. Superar el límite provoca que algunas acciones no se muestren o se oculten en un submenú.
El icono se pasa en NotificationCompat.Action.Builder como un recurso drawable. El icono debe ser monocromático (canal alfa), de tamaño 24x24 dp y cumplir con las pautas de Material Design.
Sí, si la notificación se muestra en la pantalla bloqueada y el indicador visibility está configurado como VISIBILITY_PUBLIC. En iOS, se requiere la opción .authenticationRequired para acciones que necesitan autorización.
En Android, el sistema recrea el proceso y entrega el Intent. En iOS, el sistema inicia la aplicación en segundo plano. La entrega garantizada se puede lograr usando BroadcastReceiver en Android y UNNotificationServiceExtension en iOS.
En Android, las acciones son visibles directamente debajo de la notificación como iconos. En iOS, las acciones están ocultas detrás de una presión prolongada o un deslizamiento. El diseño UX de las notificaciones debe tener en cuenta estas diferencias de plataforma.
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