En el ecosistema actual de Apple, la interacción del usuario ya no se limita a tocar botones dentro de una interfaz. Como iOS Developer, hoy te enfrentas al reto de hacer que tu aplicación sea “inteligente” y proactiva. Con la llegada de Apple Intelligence y la evolución constante de Siri, entender cómo usar App Intents en SwiftUI se ha convertido en una habilidad obligatoria para cualquier profesional de la programación Swift.
En este tutorial extenso, exploraremos desde los fundamentos hasta la implementación avanzada de App Intents para iOS, macOS y watchOS utilizando Xcode y SwiftUI. Si buscas que tu app destaque en Spotlight, Atajos y sea controlable por voz, has llegado al lugar indicado.
¿Qué es el Framework App Intents?
Introducido por Apple para reemplazar progresivamente a SiriKit, el framework App Intents es una API nativa de Swift que permite exponer las funcionalidades de tu aplicación al sistema operativo. A diferencia de los antiguos “Intents Extensions”, App Intents vive dentro del binario principal de tu app, lo que simplifica enormemente el desarrollo y mejora el rendimiento.
Para un iOS Developer, esto significa que puedes definir acciones que Siri puede ejecutar, que los usuarios pueden automatizar en la app Atajos (Shortcuts), o que incluso pueden aparecer como sugerencias inteligentes en el sistema según el contexto del usuario.
Configuración Inicial en Xcode
Para comenzar, asegúrate de estar utilizando la versión más reciente de Xcode. La ventaja de App Intents es su naturaleza multiplataforma. Al escribir tu código en Swift, este será compatible con:
- iOS: Para interacción móvil y Botón de Acción.
- macOS: Para automatización de flujos de trabajo profesionales.
- watchOS: Para comandos rápidos desde la muñeca.
Crea un nuevo archivo en tu proyecto de SwiftUI llamado AppIntentsProvider.swift. No olvides importar el framework al inicio del archivo.
1. Creando tu Primer AppIntent
El corazón de este sistema es el protocolo AppIntent. Vamos a definir una acción sencilla pero útil: “Crear una Nota Rápida”. Este es el esquema básico de cómo se estructura una intención en programación Swift.
import AppIntents
import SwiftUI
struct CreateQuickNoteIntent: AppIntent {
static var title: LocalizedStringResource = "Crear Nota Rápida"
static var description = IntentDescription("Permite crear una nota de texto de forma instantánea.")
@Parameter(title: "Contenido de la nota")
var content: String
@MainActor
func perform() async throws -> some ReturnsValue<String> & ProvidesDialog {
// Aquí iría la lógica para guardar la nota en tu base de datos o SwiftData
print("Guardando nota: \(content)")
return .result(
value: content,
dialog: "¡Perfecto! He guardado tu nota: '\(content)'"
)
}
}
En este fragmento, el atributo @Parameter es crucial. Define qué información necesita la intención para ejecutarse. Si el usuario activa esta intención mediante Siri pero no proporciona el contenido, el sistema le preguntará automáticamente “¿Cuál es el contenido de la nota?”.
2. App Entities: El Puente entre Datos y Siri
Si tu aplicación maneja objetos complejos (como libros, proyectos o recetas), necesitas que el sistema los entienda como entidades. Para esto usamos AppEntity. Esto permite que un usuario diga: “Añade este ingrediente a la Receta de Tacos“, donde “Receta de Tacos” es una entidad identificable.
Implementar AppEntity requiere también un EntityQuery para que el sistema pueda buscar y filtrar tus datos.
struct RecipeEntity: AppEntity {
let id: UUID
let name: String
static var typeDisplayRepresentation: TypeDisplayRepresentation = "Receta"
var displayRepresentation: DisplayRepresentation {
DisplayRepresentation(title: "\(name)")
}
static var defaultQuery = RecipeQuery()
}
struct RecipeQuery: EntityQuery {
func entities(for identifiers: [UUID]) async throws -> [RecipeEntity] {
// Simulación de búsqueda en base de datos
return []
}
func suggestedEntities() async throws -> [RecipeEntity] {
// Sugerencias que aparecen al configurar un atajo
return [RecipeEntity(id: UUID(), name: "Pasta Carbonara")]
}
}
3. App Shortcuts: Descubrimiento Instantáneo
Como iOS Developer, quieres que tus usuarios encuentren tus funciones sin esfuerzo. Los AppShortcuts permiten que tus intenciones aparezcan en la aplicación Atajos y Spotlight automáticamente tras instalar la app, sin que el usuario tenga que configurar nada manualmente.
struct MyAppShortcuts: AppShortcutsProvider {
static var appShortcuts: [AppShortcut] {
AppShortcut(
intent: CreateQuickNoteIntent(),
phrases: [
"Escribe una nota en \(.applicationName)",
"Nueva nota rápida con \(.applicationName)",
"Crear nota en \(.applicationName)"
],
shortTitle: "Nueva Nota",
systemImageName: "note.text.badge.plus"
)
}
}
El uso de .applicationName es una buena práctica de programación Swift, ya que adapta la frase automáticamente al nombre de tu app, mejorando la localización y el reconocimiento de voz de Siri.
4. Integración con la Interfaz de SwiftUI
¿Qué pasa si quieres disparar una intención desde un botón dentro de tu app? SwiftUI facilita esto enormemente. Puedes usar el componente IntentButton o simplemente llamar a la intención programáticamente.
struct ContentView: View {
var body: some View {
VStack(spacing: 20) {
Text("Gestor de Notas")
.font(.largeTitle)
// Botón nativo que dispara el App Intent
Button(intent: CreateQuickNoteIntent()) {
Label("Añadir Nota vía Intent", systemImage: "plus")
}
.buttonStyle(.borderedProminent)
}
.padding()
}
}
Desarrollo Multiplataforma: iOS, macOS y watchOS
Una de las mayores ventajas de usar Xcode para implementar App Intents es que el código es casi 100% reutilizable. Sin embargo, hay matices que todo iOS Developer debe considerar:
App Intents en macOS
En el Mac, los App Intents son fundamentales para el soporte de AppleScript y la aplicación Atajos de macOS. Permiten que tu app se convierta en una herramienta de productividad profesional, permitiendo que otros procesos del sistema automaticen tareas dentro de tu aplicación.
App Intents en watchOS
En el Apple Watch, la voz es la interfaz principal. Los App Intents permiten que los usuarios ejecuten acciones complejas sin tener que navegar por menús en una pantalla pequeña. Es vital que las respuestas (Dialogs) sean cortas y concisas.
Optimización para Apple Intelligence y Siri
Con la integración de modelos de lenguaje avanzados, el sistema operativo ahora intenta “entender” qué hace tu intención basándose en metadatos. Para optimizar tu app en 2026, sigue estos consejos:
- Nombres semánticos: No llames a un parámetro “p1”, llámalo “nombreDelCliente”.
- Descripciones ricas: Usa
IntentDescriptionpara explicar exactamente qué sucede al ejecutar la acción. - Categorías de Intentos: Clasifica tus intenciones (ej. `MailIntent`, `WorkIntent`) para ayudar al sistema a indexarlas correctamente.
Conclusión
Dominar cómo usar App Intents en SwiftUI no solo mejora la accesibilidad de tu aplicación, sino que la posiciona como una herramienta moderna y preparada para la inteligencia artificial. La programación Swift ha evolucionado para que la integración entre el sistema y la app sea invisible y potente.








