App Intents et raccourcis
Exposez des actions dans Siri et Raccourcis.
App Intents et raccourcis est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.
Que sont les intentions d’app
Le cadre des intentions d’app expose les actions de votre application au système — Siri, Raccourcis, Spotlight, les widgets et le bouton d’action. Vous décrivez une action une seule fois sous la forme d’un type Swift, puis elle devient disponible partout, pilotable à la voix et automatisable.
import AppIntents
// Define an action as a type; the system can run it
// from Siri, Shortcuts, Spotlight, widgets, etc.Définir un AppIntent
Une intention adopte AppIntent, déclare un title destiné à l’utilisateur et implémente perform(), qui effectue le travail et renvoie un résultat. Le cadre la détecte automatiquement — aucune inscription n’est nécessaire.
import AppIntents
struct AddTaskIntent: AppIntent {
static var title: LocalizedStringResource = "Add Task"
func perform() async throws -> some IntentResult {
// create the task here
return .result()
}
}Paramètres
Utilisez l’enveloppe de propriété @Parameter pour demander une saisie à l’utilisateur (ou à Siri). Le système demande les valeurs manquantes et les valide. Chaque paramètre possède un titre affiché dans l’éditeur de raccourcis.
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()
}
}Valeurs renvoyées et dialogue
Une intention peut renvoyer des données et énoncer une confirmation. Les variantes d’IntentResult telles que .result(value:dialog:) vous permettent de renvoyer une valeur typée accompagnée d’un dialogue vocal ou visuel que Siri restitue à l’utilisateur.
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")
}
}Résumé des paramètres
parameterSummary décrit la phrase affichée dans l’éditeur de Raccourcis en intégrant les paramètres dans un langage naturel, comme Ajouter \(taskTitle) à ma liste. Cela rend votre action claire lorsqu’elle est combinée à d’autres actions dans des raccourcis.
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()
}
}Entités
Une AppEntity représente un objet de modèle que le système peut interpréter — une tâche, une note ou une liste de lecture. Avec une entité et une requête, Siri et Raccourcis peuvent permettre aux utilisateurs de choisir une valeur de paramètre parmi vos données.
import AppIntents
struct TaskEntity: AppEntity {
static var typeDisplayRepresentation:
TypeDisplayRepresentation = "Task"
var id: String
var displayRepresentation: DisplayRepresentation {
DisplayRepresentation(title: "\(id)")
}
static var defaultQuery = TaskQuery()
}Requêtes d’entités
Une EntityQuery indique au système comment trouver vos entités par identifiant et comment répertorier les suggestions. Elle alimente le sélecteur que l’utilisateur voit lorsqu’il choisit une valeur dans Raccourcis ou répond à 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")]
}
}Raccourcis d’application
Un AppShortcut permet d’exécuter une intention à la voix sans configuration — l’utilisateur n’a pas besoin de créer d’abord un raccourci. Vous fournissez des phrases de déclenchement qui doivent inclure le jeton du nom de l’application afin que Siri connaisse le contexte.
import AppIntents
struct AddTaskShortcut: AppShortcutsProvider {
static var appShortcuts: [AppShortcut] {
AppShortcut(
intent: AddTaskIntent(),
phrases: ["Add a task in \(.applicationName)"],
shortTitle: "Add Task",
systemImageName: "plus")
}
}Phrases de déclenchement
Les phrases doivent contenir \(.applicationName) afin que Siri puisse lever les ambiguïtés. Proposez plusieurs formulations naturelles que les utilisateurs pourraient prononcer. La mise en correspondance est gérée par le système, vous n’avez donc pas à analyser la langue vous-même.
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"
_ = phrasesUtiliser les intentions au-delà de Siri
Comme les intentions sont déclaratives, la même AddTaskIntent peut alimenter un module interactif Button(intent:), une commande du Centre de contrôle ou une action Raccourcis — tous exécutant votre perform() sans infrastructure supplémentaire.
import AppIntents
import SwiftUI
// In an interactive widget:
// Button(intent: AddTaskIntent()) {
// Label("Add", systemImage: "plus")
// }
let reuse = "one intent, many surfaces"
_ = reuseLocaliser les intentions
Les titres et les dialogues utilisent LocalizedStringResource, ce qui permet leur traduction grâce à votre catalogue de chaînes. Les phrases de déclenchement sont elles aussi localisées pour chaque langue, afin que Siri puisse répondre aux utilisateurs dans leur propre langue.
import AppIntents
struct GreetIntent: AppIntent {
static var title: LocalizedStringResource = "Greet"
func perform() async throws
-> some IntentResult & ProvidesDialog {
.result(dialog: "Welcome back")
}
}Vérification rapide
Rappelez-vous ce qui rend valides les phrases d’un AppShortcut.
Récapitulatif
Vous avez découvert les intentions d’app :
- Conformez-vous à
AppIntentavec untitleetperform(); récupérez les entrées avec@Parameteret décrivez-les avecparameterSummary. - Modélisez les données sous forme d’
AppEntityavec uneEntityQuerypour les sélecteurs et les suggestions. - Rendez les actions vocales disponibles grâce aux phrases de
AppShortcutqui incluent\(.applicationName). - La même intention permet d’utiliser Siri, Raccourcis, les modules interactifs et les commandes, et sa localisation est assurée grâce à
LocalizedStringResource.
Questions Fréquemment Posées
La leçon « App Intents et raccourcis » est-elle gratuite ?
Oui — le texte complet de « App Intents et raccourcis » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « App Intents et raccourcis » ?
Exposez des actions dans Siri et Raccourcis. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Swift Academy ?
Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « App Intents et raccourcis » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?
Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Créer un widget avec WidgetKit
- Fournisseurs de chronologie et instantanés
- Présentation des extensions d’app
- App Intents et raccourcis