Notification Category: qué es, qué categorías existen y cómo funcionan en iOS

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

Notification Category (categoría de notificaciones) es un mecanismo de iOS para agrupar notificaciones push por tipo y adjuntarles acciones personalizadas. La categoría determina qué botones se muestran al usar 3D Touch o long-press en una notificación, así como el modo en que el sistema procesa las notificaciones entrantes de este tipo. Según la Documentación para Desarrolladores de Apple, UNNotificationCategory se registra en UNUserNotificationCenter y se vincula a una notificación mediante el campo category en el payload APNS.

Puntos Clave

  • Notification Category — mecanismo de iOS para clasificar notificaciones push y añadirles acciones
  • UNNotificationCategory — clase que registra una categoría con un conjunto de UNNotificationAction
  • Acciones — botones bajo la notificación: UNTextInputAction para entrada de texto, UNNotificationAction para toque
  • Conexión — la categoría se especifica en el payload APNS mediante la clave category en el diccionario aps
  • Diferencia con Android — iOS Category gestiona acciones, mientras que Android Channel gestiona importancia y sonido

¿Qué es Notification Category en iOS?

Notification Category es una función de iOS (desde la versión 8.0) que permite a los desarrolladores clasificar notificaciones push y añadirles acciones interactivas. Cuando un usuario recibe una notificación y presiona con fuerza (3D Touch) o hace una pulsación larga, aparecen botones definidos por la categoría. Esto hace que las notificaciones sean interactivas y permite a los usuarios actuar sin abrir la aplicación.

Una categoría se registra mediante un objeto UNNotificationCategory, que contiene un identificador, un array de acciones y parámetros de visualización opcionales. El sistema usa el identificador de categoría del payload APNS para encontrar la categoría registrada y mostrar los botones correspondientes.

A diferencia de Android Notification Channel, iOS Category no gestiona la importancia, el sonido ni la vibración. Su único propósito es proporcionar capacidades interactivas para las notificaciones: botones de respuesta, confirmación, cancelación o entrada de texto.

¿Son obligatorias las categorías?

Las categorías no son obligatorias para mostrar notificaciones push en iOS. La notificación aparecerá de todos modos — con botones si hay una categoría registrada, o sin ellos. Las categorías solo son necesarias para añadir interactividad a las notificaciones.

¿Cómo funcionan las categorías de notificaciones?

El mecanismo de categorías consta de cuatro etapas: registrar la categoría en el cliente, enviar un payload APNS con la categoría, que el sistema reconozca la categoría y gestionar la acción del usuario.

  • Registro — la aplicación crea una UNNotificationCategory con un array de acciones y la registra en UNUserNotificationCenter
  • Envío — el servidor incluye la clave category en el payload APNS con un valor que coincide con el identificador de la categoría
  • Visualización — iOS muestra la notificación y al presionar con fuerza muestra los botones asociados a la categoría
  • Gestión — el usuario pulsa un botón, lo que activa UNUserNotificationCenterDelegate.didReceive response

Las acciones en una categoría pueden ser de dos tipos: foreground (abren la aplicación) y background (se ejecutan en segundo plano). Para las acciones en segundo plano, la aplicación dispone de tiempo limitado (unos 30 segundos) para procesar en UNNotificationActionHandler.

Opciones al registrar una categoría

UNNotificationCategory admite varias opciones mediante el parámetro options: customDismissAction — recibir un evento al deslizar la notificación, allowInCarPlay — mostrar acciones en CarPlay, hiddenPreviewsBodyPlaceholder — texto de marcador de posición personalizado para vistas previas ocultas.

UNNotificationAction: tipos de acciones

iOS proporciona dos tipos de acciones para las categorías de notificaciones. Cada tipo tiene su propio propósito y forma de interactuar con el usuario.

TipoClaseDescripciónEjemplo
Acción simpleUNNotificationActionUn botón con título y opciones (destructive, foreground, authenticationRequired)“Eliminar”, “Ver”
Entrada de textoUNTextInputActionUn botón que abre un campo de entrada de texto con un marcador de posición“Responder”, “Comentar”

UNTextInputAction es una función única de iOS. Cuando el usuario pulsa el botón “Responder”, el sistema muestra un campo de texto donde el usuario escribe su respuesta. El texto introducido se pasa al delegado junto con el identificador de la acción. Esto permite implementar respuestas rápidas sin abrir la aplicación.

Opciones de acción: options.authenticationRequired — requiere desbloquear el dispositivo, options.destructive — resalta el botón en rojo (para acciones peligrosas), options.foreground — abre la aplicación después de pulsar.

Configurar una categoría en código iOS

Las categorías se registran al iniciar la aplicación, normalmente en el método didFinishLaunchingWithOptions. El registro se realiza a través de UNUserNotificationCenter, después de solicitar permiso para notificaciones. Las categorías pueden actualizarse en cada inicio — las versiones antiguas se reemplazan por las nuevas.

swift
import UserNotifications

class AppDelegate: UIResponder, UIApplicationDelegate {

    func registerNotificationCategories() {
        let replyAction = UNTextInputNotificationAction(
            identifier: "reply",
            title: "Responder",
            options: [.foreground],
            textInputButtonTitle: "Enviar",
            textInputPlaceholder: "Escriba un mensaje..."
        )

        let deleteAction = UNNotificationAction(
            identifier: "delete",
            title: "Eliminar",
            options: [.destructive]
        )

        let messageCategory = UNNotificationCategory(
            identifier: "message",
            actions: [replyAction, deleteAction],
            intentIdentifiers: [],
            options: [.customDismissAction]
        )

        UNUserNotificationCenter.current()
            .setNotificationCategories([messageCategory])
    }

    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        UNUserNotificationCenter.current().delegate = self
        registerNotificationCategories()
        return true
    }
}

Después de registrar la categoría, cualquier notificación con category = “message” en el payload APNS mostrará los botones “Responder” y “Eliminar”. La gestión de pulsaciones ocurre en userNotificationCenter:didReceive response, donde actionIdentifier determina qué botón se ha pulsado.

Gestión de pulsaciones en el delegado

Cuando el usuario pulsa un botón de categoría, iOS llama al UNUserNotificationCenterDelegate con un objeto UNNotificationResponse. El response.actionIdentifier contiene el identificador del botón pulsado, y response.notification.request.content.userInfo contiene los datos personalizados del payload.

Diferencias con los canales de Android

Los desarrolladores familiarizados con Android Notification Channels suelen confundirlos con iOS Notification Categories. A pesar del nombre similar, estos mecanismos resuelven tareas diferentes y funcionan de forma distinta.

  • Propósito — Android Channels gestionan la importancia y visibilidad de las notificaciones; iOS Categories gestionan acciones interactivas
  • Obligatoriedad — Android Channel es obligatorio para mostrar una notificación; iOS Category es opcional
  • Control del usuario — los usuarios de Android configuran canales en los ajustes del sistema; las categorías de iOS no son visibles directamente para el usuario
  • Agrupación — Android Channels se pueden agrupar en ChannelGroups; iOS Categories no se agrupan

Ambas plataformas pueden combinar ambos mecanismos: en Android, una notificación puede pertenecer a un canal con acciones de NotificationCompat, mientras que en iOS, una categoría complementa los canales, que en iOS se llaman thread-id y sirven para agrupar notificaciones en el centro de notificaciones.

Payload APNS con categoría

Para que una notificación se muestre con los botones de la categoría, el servidor debe incluir la clave category en el payload APNS. Sin esta clave, el sistema no sabrá qué categoría aplicar a la notificación.

json
{
    "aps": {
        "alert": {
            "title": "Nuevo mensaje",
            "body": "Ana: ¡Hola! ¿Cómo estás?"
        },
        "category": "message",
        "thread-id": "chat_123",
        "badge": 5,
        "sound": "default"
    }
}

La clave category debe coincidir exactamente con el identificador registrado mediante setNotificationCategories en el cliente. Las mayúsculas y minúsculas importan — “message” y “Message” se consideran categorías diferentes. Si no se encuentra la categoría, la notificación aparece sin botones, sin errores en los registros.

Gestión de categorías desconocidas

Si el servidor envía una notificación con una categoría que no está registrada en el cliente, iOS ignora la categoría y muestra la notificación sin botones. El error no se registra y la aplicación no se entera del desajuste. Se recomienda sincronizar la lista de categorías entre el servidor y el cliente.

Patrones de diseño de categorías

Al diseñar categorías de notificaciones en iOS, siga el principio de una categoría — un escenario. Cada categoría debe corresponder a un tipo específico de interacción: responder a un mensaje, confirmar una acción o rechazar una solicitud. No mezcle diferentes escenarios en una misma categoría.

Use UNTextInputAction para escenarios donde el usuario necesita introducir texto sin abrir la aplicación: respuestas de mensajería, comentarios, notas rápidas. Las acciones de texto aumentan la participación — el usuario realiza una acción significativa en 2 toques en lugar de 5+ dentro de la aplicación.

Para acciones peligrosas (eliminar, bloquear), use la opción destructive. iOS resaltará estos botones en rojo, advirtiendo al usuario sobre la irreversibilidad de la acción. Para acciones que requieren desbloquear el dispositivo (ver datos personales), especifique authenticationRequired.

Pruebe las categorías en diferentes dispositivos: en iPhone con 3D Touch, en iPhone sin 3D Touch (long-press), en iPad y en Mac. El comportamiento de las categorías puede diferir ligeramente entre las plataformas de Apple. Preste especial atención a CarPlay: los botones de categoría aparecen en la pantalla del coche y deben diseñarse con texto mínimo para la seguridad del conductor.

Preguntas Frecuentes

¿Cuántas categorías se pueden registrar en iOS?

No hay límites — iOS no impone un límite en la cantidad de UNNotificationCategory. Sin embargo, en la práctica, se recomienda no usar más de 10–15 categorías para no complicar la gestión en el delegado. Cada categoría puede contener hasta 4 acciones (botones). Más de 4 acciones son ignoradas por el sistema.

¿Cómo gestionar la pulsación de un botón de categoría?

Implemente el protocolo UNUserNotificationCenterDelegate y el método didReceive. Verifique response.actionIdentifier: UNNotificationDismissActionIdentifier — deslizar para descartar, UNNotificationDefaultActionIdentifier — toque en el cuerpo, o su identificador de botón personalizado. Para botones de entrada de texto, el texto está disponible a través de response.userText.

¿En qué se diferencia category de thread-id?

Category — define las acciones interactivas (botones) para la notificación. Thread-id — agrupa las notificaciones en el Centro de Notificaciones por tema. Ambas claves se especifican en el payload APNS. Category y thread-id no están relacionados: una notificación puede tener categoría pero no thread-id, y viceversa.

¿Funcionan las categorías en macOS?

Sí, UNNotificationCategory es compatible con macOS 10.14+ (Mojave) en aplicaciones que usan el framework UserNotifications. El comportamiento de las categorías en macOS es similar al de iOS: al hacer clic en una notificación, se muestran botones y la gestión se realiza a través de UNUserNotificationCenterDelegate.

¿Es necesario actualizar las categorías en cada inicio?

Se recomienda registrar las categorías en cada inicio de la aplicación mediante setNotificationCategories. El sistema reemplaza el conjunto antiguo de categorías por el nuevo en cada llamada. Si no se actualizan, las categorías persisten entre inicios, pero cuando el código cambia, las categorías antiguas pueden causar un comportamiento inesperado.

Resumen

  • Notification Category — un mecanismo de iOS para añadir acciones interactivas a las notificaciones push
  • UNNotificationCategory — una clase que combina un identificador, un array de UNNotificationAction y opciones
  • UNTextInputAction — una acción con un campo de entrada de texto para respuestas rápidas sin abrir la aplicación
  • Payload APNS — la clave category en el diccionario aps vincula la notificación con una categoría registrada
  • Hasta 4 acciones — máximo de botones por categoría, el resto son ignorados por el sistema
  • Opciones de acción — foreground (abrir la aplicación), destructive (botón rojo), authenticationRequired
  • Diferencia con Android — iOS Category gestiona acciones, Android Channel gestiona importancia y sonido

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