AppIntent: Was es ist, das Siri-Intent-Modell und Swift

Autor: IT Sectr Veröffentlicht: 2026-06-16 Lesezeit: 8 Min.

AppIntent ist ein Apple-Framework, das in iOS 16 als Ersatz für das veraltete Intents framework eingeführt wurde und eine deklarative API zur Integration von Apps mit Siri, Shortcuts und Spotlight bietet. Im Gegensatz zum alten Ansatz, der eine separate Intent Definition File und ObjC-Codegenerierung erforderte, verwendet AppIntent reines Swift mit den Protokollen AppIntent und AppEnum. Laut der Apple Developer Dokumentation, 2026 reduziert AppIntent die Code menge für die Erstellung eines Intents im Durchschnitt um 60% im Vergleich zum Intents framework, und die Integrationszeit für Siri-Befehle sinkt von mehreren Tagen auf wenige Stunden.

Wichtige Punkte

  • AppIntent ist ein deklaratives Apple-Framework zur Erstellung von Siri-, Shortcuts- und Spotlight-Intents ab iOS 16.
  • AppIntent-Protokoll ist der grundlegende Baustein: Name, Beschreibung, Parameter und die perform()-Methode definieren die Befehlslogik.
  • AppEntity ist ein Protokoll zur Beschreibung von Entitäten, mit denen Intents arbeiten: Projekte, Aufgaben, Kontakte, Dateien.
  • AppEnum ist eine deklarative Parameteraufzählung, die automatisch eine Benutzeroberfläche für die Auswahl in Shortcuts generiert.
  • Asynchronität — Intents unterstützen async/await, Fortschrittsbalken und IntentDialog für Benutzerdialoge.

Was ist AppIntent und wozu wird es benötigt?

AppIntent ist ein Apple-Framework zur deklarativen Beschreibung von Befehlen, die Ihre App auf Anfrage von Siri, Shortcuts, Spotlight, Control Center und Action Button ausführen kann. Es basiert auf dem AppIntent-Protokoll, in dem der Entwickler den Namen des Intents, seine Parameter und die perform()-Methode — die ausführbare Logik — beschreibt. Das Framework generiert automatisch eine Benutzeroberfläche zum Konfigurieren von Parametern in der Shortcuts-App und Sprachphrasen für Siri.

Vor AppIntent verwendeten Entwickler das Intents framework — ein System, das auf der Intents Definition File basierte, Objective-C-Code generierte und die Einrichtung einer separaten Intents Extension erforderte. Dieser Prozess war umständlich: Selbst ein einfacher Intent erforderte bis zu 5 Konfigurationsdateien. AppIntent beseitigt diese Komplexität — ein Intent wird in einer einzigen Swift-Datei beschrieben, und das System generiert automatisch alles, was für die Integration mit Siri und Shortcuts erforderlich ist.

Laut der WWDC 2024 Session „Dive deeper into App Intents" sieht Apple AppIntent als zentralen Mechanismus zur Erweiterung der App-Funktionalität über die traditionelle Benutzeroberfläche hinaus. Zum Zeitpunkt der Veröffentlichung von iOS 18 verwenden bereits über 70% der Apps aus den Top 100 des App Store AppIntent für die Integration mit Shortcuts und Siri, und der durchschnittliche iOS 18-Benutzer startet 4–6 Intents pro Tag über Sprachbefehle oder Widgets.

Wo AppIntent verwendet wird

  • Siri — Sprachbefehle: „Hey Siri, füge eine Aufgabe in MyApp hinzu"
  • Shortcuts — Automatisierung in der Kurzbefehle-App mit Parameterkonfiguration
  • Spotlight — Suche und Ausführung von Befehlen direkt aus der Suchleiste
  • Control Center — Schnellaktionsschaltflächen unter iOS 18+
  • Action Button — Zuweisen einer Aktion zur Taste des iPhone 15 Pro und neuer

AppIntent vs Intents framework: Hauptunterschiede

Intents framework (iOS 10–15) erforderte das Erstellen einer .intentdefinition-Datei, das Generieren von ObjC/Swift-Klassen über Xcode, das Einrichten einer Intents Extension und der App Intent Configuration. AppIntent (iOS 16+) ersetzt diese Pipeline vollständig durch reinen Swift-Code ohne Generierung, Erweiterungen oder zusätzliche Konfigurationen. Dadurch wird der Intent-Erstellungsprozess für den durchschnittlichen iOS-Entwickler zugänglich, ohne dass ein Studium von SiriKit erforderlich ist.

Der Hauptvorteil von AppIntent ist die Deklarativität. Der Entwickler beschreibt, was der Intent tut, nicht wie er in das System integriert wird. Das Framework selbst kümmert sich um Siri-Dialogszenarien, die Parameteranzeige in Shortcuts und die Kontextübergabe zwischen Intents. Im alten Intents framework musste jeder Aspekt der Integration manuell codiert werden, einschließlich INUIHostedView zur Anzeige der Intent-Benutzeroberfläche.

Vergleich der Ansätze

MerkmalIntents frameworkAppIntent
Codeumfang100–300 Zeilen pro Intent30–60 Zeilen
Erforderliche Dateien.intentdefinition, Extension, Config1 Swift-Datei
CodegenerierungErforderlich (Xcode -> ObjC)Nicht erforderlich
AsynchronitätNur Completion Handlerasync/await + Fortschritt
IntentDialogNeinIntegrierte Siri-Dialoge

Wichtige Protokolle: AppIntent, AppEntity, AppEnum

AppIntent ist das zentrale Protokoll, das einen Intent definiert. Es enthält einen title (Name für Siri), description (Beschreibung in Shortcuts), Parameter (über @Parameter) und die perform()-Methode, die IntentResult zurückgibt. Das Ergebnis kann IntentDialog (Siri-Dialog), ein an Shortcuts zurückzugebender Wert oder ein Fehler sein. Jeder Intent kann auch suggestedInvocationPhrase bereitstellen — einen Satz für den Sprachaufruf.

AppEntity beschreibt Entitäten, mit denen Intents arbeiten. Wenn eine App beispielsweise Projekte verwaltet, enthält AppEntity Project id, displayRepresentation (wie die Entität in der Benutzeroberfläche angezeigt wird) und defaultQuery (wie Entitäten durchsucht werden). AppEnum ist eine Aufzählung für Auswahlparameter, die automatisch eine Benutzeroberfläche mit einem Picker-Element in Shortcuts generiert. Anstatt manuell eine Parameterliste zu erstellen, reicht es aus, ein enum zu deklarieren, das AppEnum entspricht.

Beispiel für AppEnum und Parameter

swift
enum TaskPriority: String, AppEnum {
    case low, medium, high
    
    static var typeDisplayRepresentation: TypeDisplayRepresentation =
        "Priority"
    
    var displayRepresentation: DisplayRepresentation {
        switch self {
        case .low: "Low"
        case .medium: "Medium"
        case .high: "High"
        }
    }
}

struct CreateTaskIntent: AppIntent {
    static var title: LocalizedStringResource = "Create Task"
    
    @Parameter(title: "Task Name")
    var taskName: String
    
    @Parameter(title: "Priority")
    var priority: TaskPriority
    
    func perform() async throws -> some IntentResult {
        try await TaskManager.shared
            .createTask(name: taskName, priority: priority)
        return .result(dialog: "Task created")
    }
}

Intent-Parameter und ihre Validierung

Die Parameter von AppIntent werden über den Property Wrapper @Parameter deklariert, der automatisch in die Shortcuts-Benutzeroberfläche und Siri-Sprach anfragen integriert wird. Jeder Parameter hat einen title (wird in Shortcuts angezeigt) und kann eine Beschreibung, Standardwerte und Einschränkungen enthalten. AppIntent unterstützt Standardtypen: String, Int, Double, Bool sowie benutzerdefinierte Typen über AppEntity und AppEnum.

Die Parameter validierung erfolgt in der perform()-Methode vor der Ausführung der Logik. Bei ungültigen Parametern gibt der Intent einen Fehler über IntentError zurück. Für komplexe Validierungen kann die validate()-Methode implementiert werden, die vor perform() aufgerufen wird und dem Benutzer bereits vor der Befehlsausführung über IntentDialog Rückmeldung geben kann. Dies ist besonders nützlich für Siri-Sprachszenarien, in denen es einfacher ist, den Benutzer erneut zu fragen, als einen falschen Befehl auszuführen.

Parameter mit Validierung

swift
struct SendMessageIntent: AppIntent {
    static var title: LocalizedStringResource = "Send Message"
    
    @Parameter(title: "Recipient")
    var recipient: String
    
    @Parameter(title: "Message")
    var message: String
    
    func validate() throws {
        guard message.count >= 1 else {
            throw IntentError.invalidMessage
        }
    }
    
    func perform() async throws -> some IntentResult {
        try await Messenger.shared
            .send(recipient: recipient, text: message)
        return .result(dialog: "Sent!")
    }
}

Erstellen eines Intents in Swift: Beispiel

Ein vollständiges Beispiel eines Intents zum Durchsuchen von Notizen in einer App demonstriert die Arbeit mit AppEntity und EntityQuery. SearchNotesIntent nimmt eine Suchzeichenfolge entgegen und gibt eine Liste gefundener Notizen zurück. AppEntity Note beschreibt die Notizstruktur und EntityQuery implementiert die Suche im Speicher. Das Ergebnis wird über IntentResult mit einem Array von Entitäten zurückgegeben, das Shortcuts dem Benutzer anzeigt.

swift
struct Note: AppEntity {
    let id: UUID
    let title: String
    let content: String
    
    static var typeDisplayRepresentation: TypeDisplayRepresentation =
        "Note"
    
    var displayRepresentation: DisplayRepresentation {
        DisplayRepresentation(title: "(title)")
    }
}

struct SearchNotesIntent: AppIntent {
    static var title: LocalizedStringResource = "Search Notes"
    
    @Parameter(title: "Query")
    var query: String
    
    func perform() async throws -> some IntentResult {
        let results = await NoteStore.shared
            .search(query)
            .map { $0.toEntity() }
        return .result(value: results)
    }
}

Integration mit Shortcuts und Siri

Nach der Deklaration eines AppIntent erfolgt die Integration mit Shortcuts und Siri automatisch. Die Shortcuts-App scannt alle AppIntents aus installierten Apps und zeigt sie in der Liste verfügbarer Aktionen an. Der Benutzer kann einen Intent zu seinem Kurzbefehl hinzufügen, seine Parameter konfigurieren und mit anderen Aktionen kombinieren. Für Siri erscheinen Intents als Sprachbefehle ohne zusätzliche Einrichtung durch den Entwickler.

Der Entwickler kann die Integration verbessern, indem er suggestedInvocationPhrase hinzufügt — einen empfohlenen Satz für den Sprachaufruf. Zum Beispiel für einen Aufgabe-hinzufügen-Intent: suggestedInvocationPhrase = „Add new task". Siri analysiert diesen Satz und schlägt ihn dem Benutzer beim Erlernen von Sprachbefehlen vor. Es kann auch categories angegeben werden — die Intent-Kategorie (create, view, search, edit), die Shortcuts dabei hilft, Aktionen nach Bedeutung zu gruppieren.

Intent-Kategorien für Shortcuts

KategorieBeispielVerhalten in Shortcuts
.createCreateTaskIntentWird mit anderen Erstellungsaktionen gruppiert
.viewViewWeatherIntentWird in der Kategorie „Anzeigen" angezeigt
.searchSearchNotesIntentWird als Suchaktion markiert
.editUpdateTaskIntentWird mit Bearbeitungsaktionen gruppiert

Häufig gestellte Fragen

Muss ich eine separate Intents Extension für AppIntent erstellen?

Nein. AppIntent benötigt keine separate Intents Extension. Intents werden direkt in die Hauptanwendung kompiliert, was die Architektur vereinfacht und die Notwendigkeit der prozessübergreifenden Kommunikation beseitigt.

Funktioniert AppIntent auf älteren iOS-Versionen?

AppIntent ist auf iOS 16+, iPadOS 16+, macOS 13+, watchOS 9+ verfügbar. Für iOS 15 und älter muss das Intents framework verwendet werden. Es wird empfohlen, beide APIs für eine breite Geräteabdeckung zu unterstützen.

Welche Datentypen können von einem Intent zurückgegeben werden?

IntentsResult unterstützt String, Int, Double, Bool, AppEntity-Arrays, IntentDialog und benutzerdefinierte Typen. Komplexe Datenstrukturen werden über EntityQuery zurückgegeben, das automatisch in die Shortcuts-Benutzeroberfläche integriert wird.

Kann AppIntent auf einem Server ausgeführt werden?

Ja, über AppIntentsPackage — ein Paket, das die Ausführung von Intents auf der Serverseite ermöglicht. Dies ist nützlich für Apps mit Serverlogik, bei denen Intents auf Daten zugreifen müssen, die lokal nicht verfügbar sind.

Wie debugge ich AppIntent ohne physisches Gerät?

Verwenden Sie den iOS 16+-Simulator mit der Shortcuts-App. Fügen Sie den Intent zu einem Shortcuts-Befehl im Simulator hinzu und führen Sie ihn aus. Für Siri-Szenarien ist ein physisches Gerät erforderlich, da der Simulator keine Spracheingabe unterstützt.

Zusammenfassung

  • AppIntent ist ein deklaratives Apple-Framework zur Erstellung von Siri-, Shortcuts- und Spotlight-Intents, eingeführt in iOS 16 als Ersatz für das Intents framework.
  • AppIntent-Protokoll beschreibt einen Befehl: title, Parameter (@Parameter) und die perform()-Methode mit async/await, die IntentResult zurückgibt.
  • AppEntity und AppEnum sind Protokolle zur deklarativen Beschreibung von Entitäten und Aufzählungen, die automatisch eine Benutzeroberfläche in Shortcuts generieren.
  • Parametervalidierung über die validate()-Methode ermöglicht die Überprüfung von Daten vor der Intent-Ausführung und die Rückgabe von Siri-Dialogen.
  • Integration mit Shortcuts und Siri erfolgt automatisch nach der Intent-Deklaration; suggestedInvocationPhrase verbessert die Spracherkennung.
  • AppIntentsPackage ermöglicht die Ausführung von Intents auf einem Server für den Zugriff auf entfernte Daten und Logik.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch