0Pricing
Swift Academy · Lección

Acciones y categorías de notificaciones

Añada acciones interactivas a las notificaciones.

Acciones y categorías de notificaciones es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.

Notificaciones interactivas

Las notificaciones pueden hacer más que mostrar texto: también pueden ofrecer botones. El usuario puede responder a un mensaje, aceptar una invitación o posponer un recordatorio sin abrir la aplicación. Esto se construye a partir de acciones agrupadas en categorías.

import UserNotifications
// Category = a set of actions
// Each delivered notification names its category
// so the system shows the right buttons

Definición de una acción

Un UNNotificationAction tiene un identificador (con el que lo asociará más adelante), un título localizado que se muestra en el botón y opciones como .destructive o .foreground (que inicia la aplicación).

import UserNotifications
let accept = UNNotificationAction(
    identifier: "ACCEPT",
    title: String(localized: "Accept"),
    options: [.foreground])
let decline = UNNotificationAction(
    identifier: "DECLINE",
    title: String(localized: "Decline"),
    options: [.destructive])

Agrupación en una categoría

Un UNNotificationCategory agrupa acciones bajo un identificador de categoría. El orden de las acciones en el array determina el orden de los botones. Registre las categorías una vez al iniciar la aplicación con el centro de notificaciones.

import UserNotifications
let inviteCategory = UNNotificationCategory(
    identifier: "INVITE",
    actions: [accept, decline],
    intentIdentifiers: [],
    options: [])
UNUserNotificationCenter.current()
    .setNotificationCategories([inviteCategory])

Asignación de una categoría a una notificación

Para que aparezcan los botones, el contenido de la notificación debe establecer categoryIdentifier con el valor de una categoría registrada. En las notificaciones push remotas, el servidor envía "category": "INVITE" dentro del diccionario aps.

import UserNotifications
let content = UNMutableNotificationContent()
content.title = String(localized: "New invite")
content.body = String(localized: "Ada invited you")
content.categoryIdentifier = "INVITE"

Gestión de la acción elegida

Cuando el usuario pulsa un botón, se activa didReceive response del delegado con response.actionIdentifier establecido en el identificador de su acción. Use una instrucción switch para realizar la operación correspondiente.

import UserNotifications
func userNotificationCenter(
    _ center: UNUserNotificationCenter,
    didReceive response: UNNotificationResponse
) async {
    switch response.actionIdentifier {
    case "ACCEPT":  print("accepted")
    case "DECLINE": print("declined")
    default:        break
    }
}

Identificadores predeterminado y de descarte

Siempre existen dos identificadores del sistema: UNNotificationDefaultActionIdentifier indica que el usuario pulsó el cuerpo para abrir la aplicación, y UNNotificationDismissActionIdentifier indica que la descartó. Gestione ambos junto con sus acciones personalizadas.

import UserNotifications
func route(_ id: String) {
    switch id {
    case UNNotificationDefaultActionIdentifier:
        print("opened the app")
    case UNNotificationDismissActionIdentifier:
        print("dismissed")
    default:
        print("custom action", id)
    }
}

Acciones de entrada de texto

Un UNTextInputNotificationAction muestra un campo de texto integrado, perfecto para respuestas rápidas. Añade un título para el botón y un texto de marcador de posición para el cuadro de entrada.

import UserNotifications
let reply = UNTextInputNotificationAction(
    identifier: "REPLY",
    title: String(localized: "Reply"),
    options: [],
    textInputButtonTitle: String(localized: "Send"),
    textInputPlaceholder: String(localized: "Message"))

Lectura del texto introducido

En una acción de texto, la respuesta es un UNTextInputNotificationResponse. Conviértala a ese tipo para leer userText, la cadena que introdujo el usuario.

import UserNotifications
func handle(_ response: UNNotificationResponse) {
    if let textResponse = response
        as? UNTextInputNotificationResponse {
        let message = textResponse.userText
        print("reply:", message)
    }
}

Opciones de categoría

Las opciones de categoría permiten ajustar el comportamiento: .customDismissAction entrega el evento de descarte al delegado, .hiddenPreviewsShowTitle muestra el título aunque las previsualizaciones estén ocultas en la pantalla bloqueada y .allowInCarPlay permite mostrar la notificación en CarPlay.

import UserNotifications
let category = UNNotificationCategory(
    identifier: "MESSAGE",
    actions: [reply],
    intentIdentifiers: [],
    options: [.customDismissAction,
              .hiddenPreviewsShowTitle])
_ = category

Acciones en segundo plano y en primer plano

Sin la opción .foreground, una acción ejecuta el controlador en segundo plano sin traer la aplicación al frente, lo que resulta ideal para posponer o indicar que algo gusta. Con .foreground, la aplicación se inicia para que pueda mostrar una interfaz. Elija según si el usuario necesita ver algo.

import UserNotifications
let snooze = UNNotificationAction(
    identifier: "SNOOZE",
    title: String(localized: "Snooze"),
    options: []) // background, no app launch
let open = UNNotificationAction(
    identifier: "OPEN",
    title: String(localized: "Open"),
    options: [.foreground]) // launches app
_ = (snooze, open)

Un flujo completo de respuesta

Combine una acción de texto, una categoría y un controlador que distinga la respuesta escrita de una simple apertura. Este patrón permite implementar respuestas de mensajes integradas.

import UserNotifications
func handle(_ response: UNNotificationResponse) async {
    switch response.actionIdentifier {
    case "REPLY":
        let text = (response as?
            UNTextInputNotificationResponse)?.userText ?? ""
        print("send reply:", text)
    case UNNotificationDefaultActionIdentifier:
        print("open conversation")
    default:
        break
    }
}

Comprobación rápida

Recuerde cómo sabe el sistema qué botones debe mostrar.

Resumen

Ha aprendido a trabajar con notificaciones interactivas:

  • Cree UNNotificationActions (incluido UNTextInputNotificationAction) y agrúpelas en un UNNotificationCategory.
  • Registre las categorías al iniciar la aplicación; establezca categoryIdentifier en el contenido (o category en la notificación push) para mostrar los botones.
  • Gestione response.actionIdentifier, incluidos los identificadores predeterminado y de descarte, y lea userText para las respuestas.
  • Omita .foreground en acciones en segundo plano, como posponer una notificación.

Preguntas frecuentes

¿La lección «Acciones y categorías de notificaciones» es gratis?

Sí — el texto completo de «Acciones y categorías de notificaciones» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Acciones y categorías de notificaciones»?

Añada acciones interactivas a las notificaciones. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Swift Academy?

No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Acciones y categorías de notificaciones»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Swift Academy?

Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Registrarse para recibir notificaciones push
  2. Gestión de cargas de notificaciones
  3. Tareas y actualización en segundo plano
  4. Acciones y categorías de notificaciones
← Volver a Swift Academy