App Intents i skróty
Udostępniaj akcje Siri i skrótom.
App Intents i skróty to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.
Czym są App Intents
Framework App Intents udostępnia działania Państwa aplikacji systemowi — Siri, Shortcuts, Spotlight, widżetom i przyciskowi czynności. Wystarczy raz opisać działanie jako typ Swift, aby stało się dostępne wszędzie, także za pomocą poleceń głosowych i automatyzacji.
import AppIntents
// Define an action as a type; the system can run it
// from Siri, Shortcuts, Spotlight, widgets, etc.Definiowanie AppIntent
Intent jest zgodny z protokołem AppIntent, deklaruje przeznaczony dla użytkownika title i implementuje metodę perform(), która wykonuje działanie i zwraca wynik. Framework wykrywa go automatycznie — rejestracja nie jest potrzebna.
import AppIntents
struct AddTaskIntent: AppIntent {
static var title: LocalizedStringResource = "Add Task"
func perform() async throws -> some IntentResult {
// create the task here
return .result()
}
}Parametry
Wrapper właściwości @Parameter służy do pobierania danych od użytkownika lub Siri. System prosi o brakujące wartości i je sprawdza. Każdy parametr ma tytuł wyświetlany w edytorze 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()
}
}Zwracanie wartości i dialogów
Intent może zwrócić dane i wypowiedzieć potwierdzenie. Warianty IntentResult, takie jak .result(value:dialog:), pozwalają zwrócić wartość określonego typu oraz dialog wypowiadany lub wyświetlany przez Siri użytkownikowi.
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")
}
}Podsumowanie parametrów
parameterSummary opisuje zdanie wyświetlane w edytorze Shortcuts, wplatając parametry w naturalny język, na przykład Dodaj \(taskTitle) do mojej listy. Dzięki temu działanie jest czytelne po dodaniu go do skrótów.
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()
}
}Encje
AppEntity reprezentuje obiekt modelu, który system może rozpoznawać — zadanie, notatkę lub playlistę. Dzięki encji i zapytaniu Siri oraz Shortcuts mogą pozwolić użytkownikowi wybrać dane z aplikacji jako wartość parametru.
import AppIntents
struct TaskEntity: AppEntity {
static var typeDisplayRepresentation:
TypeDisplayRepresentation = "Task"
var id: String
var displayRepresentation: DisplayRepresentation {
DisplayRepresentation(title: "\(id)")
}
static var defaultQuery = TaskQuery()
}Zapytania dotyczące encji
EntityQuery informuje system, jak wyszukiwać encje według id oraz jak wyświetlać sugestie. Dzięki temu działa selektor widoczny podczas wybierania wartości w Shortcuts lub odpowiadania 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
AppShortcut pozwala uruchamiać intent głosowo bez żadnej konfiguracji — użytkownik nie musi najpierw tworzyć skrótu. Należy podać frazy wywołujące, które muszą zawierać token nazwy aplikacji, aby Siri znała właściwy kontekst.
import AppIntents
struct AddTaskShortcut: AppShortcutsProvider {
static var appShortcuts: [AppShortcut] {
AppShortcut(
intent: AddTaskIntent(),
phrases: ["Add a task in \(.applicationName)"],
shortTitle: "Add Task",
systemImageName: "plus")
}
}Frazy wywołujące
Frazy muszą zawierać \(.applicationName), aby Siri mogła rozróżnić kontekst. Należy podać kilka naturalnych wariantów, które użytkownik może wypowiedzieć. System zajmuje się dopasowaniem, więc nie trzeba samodzielnie analizować języka.
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"
_ = phrasesUdostępnianie poza Siri
Ponieważ intenty są deklaratywne, ten sam AddTaskIntent może zasilać interaktywny widżet Button(intent:), element Centrum sterowania lub działanie w Shortcuts — wszystkie uruchamiają Państwa perform() bez dodatkowego kodu integracyjnego.
import AppIntents
import SwiftUI
// In an interactive widget:
// Button(intent: AddTaskIntent()) {
// Label("Add", systemImage: "plus")
// }
let reuse = "one intent, many surfaces"
_ = reuseLokalizowanie intentów
Tytuły i dialogi korzystają z LocalizedStringResource, dzięki czemu są tłumaczone za pomocą String Catalog. Frazy wywołujące również są lokalizowane dla poszczególnych języków, co pozwala Siri odpowiadać użytkownikom w ich własnym języku.
import AppIntents
struct GreetIntent: AppIntent {
static var title: LocalizedStringResource = "Greet"
func perform() async throws
-> some IntentResult & ProvidesDialog {
.result(dialog: "Welcome back")
}
}Szybkie sprawdzenie
Przypomnijmy sobie, co sprawia, że frazy AppShortcut są prawidłowe.
Podsumowanie
W tej lekcji poznano App Intents:
- Należy dostosować się do
AppIntent, dodająctitleiperform(); dane wejściowe zbierać za pomocą@Parameteri opisywać je przy użyciuparameterSummary. - Dane należy modelować jako
AppEntityz elementemEntityQueryobsługującym selektory i sugestie. - Działania głosowe można udostępniać za pomocą fraz
AppShortcutzawierających\(.applicationName). - Ten sam intent obsługuje Siri, Shortcuts, interaktywne widżety i elementy sterujące, a jego lokalizację zapewnia
LocalizedStringResource.
Często zadawane pytania
Czy lekcja „App Intents i skróty” jest bezpłatna?
Tak — pełny tekst „App Intents i skróty” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „App Intents i skróty”?
Udostępniaj akcje Siri i skrótom. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Swift Academy?
Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „App Intents i skróty”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?
Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Tworzenie widżetu WidgetKit
- Dostawcy osi czasu i migawki
- Przegląd rozszerzeń aplikacji
- App Intents i skróty