Creación de App Intents en iOS para Automatización con Shortcuts
Clase 12 de 31 • Curso de Integración Nativa iOS
Resumen
¿Cómo integrar funciones personalizadas en tu app de iOS?
iOS ofrece herramientas increíbles para automatizar y extender las funcionalidades de las aplicaciones, permitiendo una interacción sin precedentes con los usuarios. Una de estas herramientas es la app Shortcuts, que permite automatizar tareas complicadas con solo un par de toques. La clave de estas automaciones son los App Intents, con los que puedes publicar acciones que interactúen con otras aplicaciones como Siri o Spotlight. Vamos a explorar el proceso para crear un simple saludo y una función de multiplicación de números, ambos controlados desde aplicaciones externas como Shortcuts.
¿Qué son los App Intents y cómo funcionan?
Los App Intents son una herramienta esencial para permitir que otras aplicaciones interactúen con la tuya. Te permiten desarrollar acciones específicas que pueden ser accesibles desde otras aplicaciones o servicios del sistema operativo, como Siri o los widgets.
-
Ejemplo Práctico: Crear un archivo
SaludoIntent
que permita a cualquier aplicación externa enviar un saludo personalizado. Esta acción se expondrá y estará accesible desde la app de Shortcuts u otra compatible, donde simplemente puedes especificar un nombre y recibir un saludo. -
Código Ejemplo:
struct SaludoIntent: AppIntent { static var title: LocalizedStringResource = "Saludar a alguien" @Parameter(title: "Nombre de la persona") var name: String func perform() async throws -> some IntentResult { return .result(dialog: IntentDialog(title: "Hola \(name)")) } }
¿Cómo se registra un App Intent en tu aplicación?
Para que las acciones estén disponibles en sistemas externos como Shortcuts, primero debes registrarlas adecuadamente. Esto implica crear un archivo para el registro y determinando parámetros clave como frases de activación.
- Archivo de Registro:
Se necesita definir un proveedor de shortcuts que se encargue de identificar y exponer nuestros
AppIntent
a otras aplicaciones.struct MyAppIntentShortcuts: AppShortcutsProvider { static var appShortcuts: [AppShortcut] { return [ AppShortcut(intent: SaludoIntent(), phrases: ["Saludar a \(.name)"]) ] } }
¿Cómo crear funciones de cálculo con App Intents?
Aparte de simples comandos, también puedes integrar cálculos y procesos más complejos. Por ejemplo, multipliquemos dos números ingresados por el usuario.
-
Código para Multiplicación:
struct MultiplicarNumerosIntent: AppIntent { static var title: LocalizedStringResource = "Multiplicar dos números" @Parameter(title: "Primer número") var firstNumber: Double @Parameter(title: "Segundo número") var secondNumber: Double func perform() async throws -> some IntentResult { let result = firstNumber * secondNumber return .result(value: result, dialog: IntentDialog("El resultado es \(result)")) } }
-
Registro del Intent de Multiplicación: Asegúrate de registrar este nuevo intent para que también esté disponible.
struct MyAppMultiplyShortcuts: AppShortcutsProvider { static var appShortcuts: [AppShortcut] { return [ AppShortcut(intent: MultiplicarNumerosIntent(), phrases: ["Multiplicar \(.firstNumber) con \(.secondNumber)"]) ] } }
¿Qué más puedes crear con App Intents y Shortcuts?
Las posibilidades son prácticamente infinitas. Una vez que comprendes cómo estructurar y registrar tus App Intents, puedes ir desde funciones simples como saludos o multiplicaciones, hasta crear alarmas, recordatorios, o enriquecer tu aplicación con integraciones más sofisticadas.
- Ideas de Expansión:
- Crear recordatorios autoprogramables.
- Integrar conversiones automáticas de monedas.
- Generar reportes o resúmenes de actividad basados en inputs del usuario.
Con la versatilidad de los App Intents y las capacidades multitarea de Shortcuts, tus aplicaciones pueden ofrecer a los usuarios experiencias más ricas y personalizables, llevándolas más allá de lo que tradicionalmente se espera de una app. Aprende, explora y crea acciones personalizadas que agreguen verdadero valor a la experiencia del usuario.