App Intents e atalhos
Disponibilize ações para a Siri e os Atalhos.
App Intents e atalhos é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.
O que são App Intents
O framework App Intents expõe as ações do seu aplicativo ao sistema — Siri, Atalhos, Spotlight, widgets e o botão de Ação. Você descreve uma ação uma única vez como um tipo Swift, e ela fica disponível em todos esses contextos, podendo ser controlada por voz e automatizada.
import AppIntents
// Define an action as a type; the system can run it
// from Siri, Shortcuts, Spotlight, widgets, etc.Definição de um AppIntent
Uma intenção está em conformidade com AppIntent, declara um title voltado ao usuário e implementa perform(), que executa o trabalho e retorna um resultado. O framework a descobre automaticamente: não é necessário fazer nenhum registro.
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 o wrapper de propriedade @Parameter para solicitar uma entrada ao usuário (ou à Siri). O sistema solicita os valores ausentes e os valida. Cada parâmetro tem um título exibido no editor de Atalhos.
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()
}
}Retorno de Valores e Diálogo
Uma intenção pode retornar dados e apresentar uma confirmação por voz. Variantes de IntentResult, como .result(value:dialog:), permitem retornar um valor tipado e também um diálogo falado ou visível que a Siri reproduz para o usuário.
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")
}
}Resumo dos Parâmetros
parameterSummary descreve a frase exibida no editor de Atalhos, incorporando parâmetros à linguagem natural, como Adicione \(taskTitle) à minha lista. Isso faz sua ação ficar clara quando combinada em atalhos.
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
Uma AppEntity representa um objeto de modelo que o sistema pode compreender — uma tarefa, uma nota ou uma lista de reprodução. Com uma entidade e uma consulta, a Siri e os Atalhos podem permitir que os usuários escolham dados como valor de um 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
Uma EntityQuery informa ao sistema como encontrar suas entidades pelo identificador e como listar sugestões. Isso alimenta o seletor que o usuário vê ao escolher um valor nos Atalhos ou ao responder à 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")]
}
}Atalhos do Aplicativo
Um AppShortcut torna uma intenção executável por voz sem nenhuma configuração — não é necessário que o usuário crie um atalho antes. Você fornece frases de ativação que devem incluir a parte com o nome do aplicativo para que a Siri saiba o 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 Ativação
As frases devem conter \(.applicationName) para que a Siri possa desambiguá-las. Forneça várias variações naturais que os usuários poderiam dizer. O sistema cuida da correspondência, portanto você não precisa analisar o idioma por conta própria.
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"
_ = phrasesDisponibilizando Além da Siri
Como as intenções são declarativas, a mesma AddTaskIntent pode alimentar um widget interativo Button(intent:), um controle da Central de Controle ou uma ação dos Atalhos — tudo executando seu perform() sem integração adicional.
import AppIntents
import SwiftUI
// In an interactive widget:
// Button(intent: AddTaskIntent()) {
// Label("Add", systemImage: "plus")
// }
let reuse = "one intent, many surfaces"
_ = reuseLocalizando Intenções
Os títulos e os diálogos usam LocalizedStringResource, portanto são traduzidos por meio do seu catálogo de textos. As frases de ativação também são localizadas para cada idioma, permitindo que a Siri responda aos usuários na própria língua.
import AppIntents
struct GreetIntent: AppIntent {
static var title: LocalizedStringResource = "Greet"
func perform() async throws
-> some IntentResult & ProvidesDialog {
.result(dialog: "Welcome back")
}
}Verificação Rápida
Lembre-se do que torna válidas as frases de um AppShortcut.
Recapitulação
Você aprendeu sobre as intenções de aplicativos:
- Implemente
AppIntentcom umtitleeperform(); obtenha a entrada por meio de@Parametere descreva-a comparameterSummary. - Modele os dados como
AppEntitycom umaEntityQuerypara seletores e sugestões. - Disponibilize ações de voz por meio de frases de
AppShortcutque incluam\(.applicationName). - A mesma intenção alimenta a Siri, os Atalhos, widgets interativos e controles, e é localizada por meio de
LocalizedStringResource.
Aprenda Swift com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 122
- Aulas
- 409
Perguntas Frequentes
A aula “App Intents e atalhos” é grátis?
Sim — o texto completo de “App Intents e atalhos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.
O que vou aprender em “App Intents e atalhos”?
Disponibilize ações para a Siri e os Atalhos. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Swift Academy?
Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “App Intents e atalhos”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Swift Academy?
Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Criando um WidgetKit Widget
- Provedores de linha do tempo e instantâneos
- Visão geral das extensões de aplicativos
- App Intents e atalhos