App Intents y Shortcuts
Exponga acciones a Siri y Shortcuts.
App Intents y Shortcuts 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.
Qué son los App Intents
El framework App Intents expone las acciones de su app al sistema —Siri, Shortcuts, Spotlight, los widgets y el botón de acción—. Describe una acción una sola vez como un tipo de Swift y esta pasa a estar disponible en todas partes, controlada por voz y automatizable.
import AppIntents
// Define an action as a type; the system can run it
// from Siri, Shortcuts, Spotlight, widgets, etc.Definir un AppIntent
Un intent adopta AppIntent, declara un title visible para el usuario e implementa perform(), que realiza el trabajo y devuelve un resultado. El framework lo descubre automáticamente; no es necesario registrarlo.
import AppIntents
struct AddTaskIntent: AppIntent {
static var title: LocalizedStringResource = "Add Task"
func perform() async throws -> some IntentResult {
// create the task here
return .result()
}
}Parámetros
Use el wrapper de propiedad @Parameter para solicitar datos al usuario (o a Siri). El sistema solicita los valores que falten y los valida. Cada parámetro tiene un título que se muestra en el editor de Shortcuts.
import AppIntents
struct AddTaskIntent: AppIntent {
static var title: LocalizedStringResource = "Add Task"
@Parameter(title: "Title")
var taskTitle: String
func perform() async throws -> some IntentResult {
return .result()
}
}Devolver valores y mostrar un diálogo
Un intent puede devolver datos y pronunciar una confirmación. Las variantes de IntentResult, como .result(value:dialog:), permiten devolver un valor con tipo junto con un diálogo hablado o visible que Siri lee al usuario.
import AppIntents
struct CountTasksIntent: AppIntent {
static var title: LocalizedStringResource = "Count Tasks"
func perform() async throws
-> some IntentResult & ProvidesDialog {
let count = 5
return .result(
dialog: "You have \(count) tasks")
}
}Resumen de parámetros
parameterSummary describe la frase que se muestra en el editor de Shortcuts e inserta los parámetros en un lenguaje natural, como Añadir \(taskTitle) a mi lista. Esto hace que la acción se entienda claramente al combinarla en shortcuts.
import AppIntents
struct AddTaskIntent: AppIntent {
static var title: LocalizedStringResource = "Add Task"
@Parameter(title: "Title") var taskTitle: String
static var parameterSummary: some ParameterSummary {
Summary("Add \(\.$taskTitle) to my list")
}
func perform() async throws -> some IntentResult {
.result()
}
}Entidades
Un AppEntity representa un objeto del modelo que el sistema puede interpretar: una tarea, una nota o una lista de reproducción. Con una entidad y una consulta, Siri y Shortcuts permiten que los usuarios elijan un elemento de sus datos como valor de un parámetro.
import AppIntents
struct TaskEntity: AppEntity {
static var typeDisplayRepresentation:
TypeDisplayRepresentation = "Task"
var id: String
var displayRepresentation: DisplayRepresentation {
DisplayRepresentation(title: "\(id)")
}
static var defaultQuery = TaskQuery()
}Consultas de entidades
Un EntityQuery indica al sistema cómo buscar sus entidades por identificador y cómo mostrar sugerencias. Esto proporciona el selector que el usuario ve al elegir un valor en Shortcuts o al responder a Siri.
import AppIntents
struct TaskQuery: EntityQuery {
func entities(for ids: [String]) async throws
-> [TaskEntity] {
ids.map { TaskEntity(id: $0) }
}
func suggestedEntities() async throws -> [TaskEntity] {
[TaskEntity(id: "Groceries")]
}
}App Shortcuts
Un AppShortcut permite ejecutar un intent mediante la voz sin configuración previa: el usuario no necesita crear primero un shortcut. Debe proporcionar frases de activación que incluyan el token del nombre de la app para que Siri conozca el contexto.
import AppIntents
struct AddTaskShortcut: AppShortcutsProvider {
static var appShortcuts: [AppShortcut] {
AppShortcut(
intent: AddTaskIntent(),
phrases: ["Add a task in \(.applicationName)"],
shortTitle: "Add Task",
systemImageName: "plus")
}
}Frases de activación
Las frases deben contener \(.applicationName) para que Siri pueda distinguir el contexto. Proporcione varias formas naturales en las que los usuarios podrían expresarlo. El sistema se encarga de encontrar coincidencias, por lo que no necesita analizar el lenguaje por su cuenta.
import AppIntents
// Provide variants; applicationName is required:
// phrases: [
// "Add a task in \(.applicationName)",
// "Create a task with \(.applicationName)",
// "New \(.applicationName) task"
// ]
let phrases = "include applicationName token"
_ = phrasesMás allá de Siri
Como los intents son declarativos, el mismo AddTaskIntent puede controlar un widget interactivo Button(intent:), un control del Centro de control o una acción de Shortcuts; todos ejecutan su perform() sin necesidad de lógica adicional.
import AppIntents
import SwiftUI
// In an interactive widget:
// Button(intent: AddTaskIntent()) {
// Label("Add", systemImage: "plus")
// }
let reuse = "one intent, many surfaces"
_ = reuseLocalizar intents
Los títulos y los diálogos utilizan LocalizedStringResource, por lo que se traducen mediante su String Catalog. Las frases de activación también se localizan para cada idioma, lo que permite que Siri responda a los usuarios en su propio idioma.
import AppIntents
struct GreetIntent: AppIntent {
static var title: LocalizedStringResource = "Greet"
func perform() async throws
-> some IntentResult & ProvidesDialog {
.result(dialog: "Welcome back")
}
}Comprobación rápida
Recuerde qué hace que las frases de un AppShortcut sean válidas.
Repaso
Ha aprendido sobre App Intents:
- Adopte el protocolo
AppIntentcon untitley unperform(); recopile datos de entrada mediante@Parametery descríbalos conparameterSummary. - Modele los datos como
AppEntitycon unEntityQuerypara proporcionar selectores y sugerencias. - Exponga acciones de voz mediante frases de
AppShortcutque incluyan\(.applicationName). - El mismo intent permite usar Siri, Shortcuts, widgets interactivos y controles, y se localiza mediante
LocalizedStringResource.
Aprende Swift con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 122
- Lecciones
- 409
Preguntas frecuentes
¿La lección «App Intents y Shortcuts» es gratis?
Sí — el texto completo de «App Intents y Shortcuts» 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 «App Intents y Shortcuts»?
Exponga acciones a Siri y Shortcuts. 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 «App Intents y Shortcuts»?
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
- Cómo crear un widget con WidgetKit
- Proveedores de líneas de tiempo y snapshots
- Descripción general de las extensiones de apps
- App Intents y Shortcuts