Swift Academy · Aula

App Intents e atalhos

Disponibilize ações para a Siri e os Atalhos.

Aula 4 de 413 etapas

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"
_ = phrases

Disponibilizando 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"
_ = reuse

Localizando 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 AppIntent com um title e perform(); obtenha a entrada por meio de @Parameter e descreva-a com parameterSummary.
  • Modele os dados como AppEntity com uma EntityQuery para seletores e sugestões.
  • Disponibilize ações de voz por meio de frases de AppShortcut que incluam \(.applicationName).
  • A mesma intenção alimenta a Siri, os Atalhos, widgets interativos e controles, e é localizada por meio de LocalizedStringResource.
Grátis para começar

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

  1. Criando um WidgetKit Widget
  2. Provedores de linha do tempo e instantâneos
  3. Visão geral das extensões de aplicativos
  4. App Intents e atalhos
← Voltar para Swift Academy