Siri Intent ist ein Mechanismus zur Integration einer iOS-App mit dem Sprachassistenten Siri, der es Benutzern ermöglicht, Aktionen per Sprache auszuführen, ohne die App zu öffnen. Die Entwicklung erfolgt in Swift mit den Frameworks Intents (Intents.framework) und SiriKit. Ab iOS 16 erschien App Intents — ein neues, flexibleres Framework zum Erstellen benutzerdefinierter Sprachbefehle. Siri Intent unterstützt 10 Domänen (Nachrichten, Anrufe, Zahlungen, Notizen, Workouts und andere) und ermöglicht der App, Sprachanfragen über IntentHandler zu verarbeiten. Lassen Sie uns Schlüsselkonzepte, Architektur und Codebeispiele erkunden.
Das Wichtigste
Siri Intent ist ein Mechanismus, der einer iOS-App ermöglicht, vom Benutzer gesprochene Sprachbefehle über Siri zu verarbeiten. Wenn der Benutzer sagt “Siri, send a message to Ivan on Telegram,” Siri erkennt den Intent (INSendMessageIntent), identifiziert die App, die ihn verarbeiten kann (Telegram), übergibt die Parameter (contact “Ivan,” message text), und startet den IntentHandler der App. Der gesamte Vorgang dauert 0.5–2 seconds und erfordert kein Öffnen der App.
Die Architektur von Siri Intent umfasst drei Komponenten. Die erste ist die .intentdefinition-Datei, die die Intent-Struktur beschreibt: Parameter (String, Integer, INPerson), Trigger-Phrasen und Antworten. Die zweite ist IntentHandler, der das Handling-Protokoll implementiert: Parameter empfangen, die Aktion ausführen (z.B. eine Nachricht über die App-API senden) und eine INInteraction mit einem Ergebniscode zurückgeben. Die dritte ist Intents Extension, ein separates Target in Xcode, das in einem eigenen Prozess läuft. Siri startet die Intents Extension bei einer Sprachanfrage, übergibt ihr Daten und erhält das Ergebnis. Die Extension hat keine UI — sie läuft im Hintergrund und muss innerhalb von 5–10 Sekunden abgeschlossen sein.
Anwendungsfälle von Siri Intent: sending messages (INSendMessageIntent), making calls (INStartCallIntent), sending payments (INSendPaymentIntent), creating notes (INCreateNoteIntent), workouts (INStartWorkoutIntent), photos (INSucheForFotosIntent), booking trips (INBookRestaurantReservationIntent), car functions (INSetCarLockStatusIntent). Jede Domäne hat ein strenges Parameterschema und von Apple definierte Einschränkungen aus Sicherheitsgründen.
SiriKit ist ein von Apple in iOS 10 (2016) eingeführtes Framework. Es bietet vorgefertigte Domänen (Intents) für typische Aktionen: messages, calls, payments, notes, reminders, photos, workouts, booking, car functions, search. Für jede Domäne hat Apple eine Reihe von Intent-Klassen definiert (INSendMessageIntent, INStartCallIntent) die die App über IntentHandler implementiert. SiriKit generiert automatisch eine UI-Bestätigung vor der Ausführung (bei Zahlungen und Nachrichten ist Bestätigung obligatorisch).
SiriKit Domänen:
SiriKit Einschränkungen: Entwickler können keine benutzerdefinierten Domänen erstellen — sie können nur vordefinierte verwenden. Diese Einschränkung wurde in iOS 16 mit der Einführung von App Intents gelöst, das die Erstellung beliebiger Sprachbefehle für beliebige App-Aktionen ermöglicht.
App Intents ist ein Apple-Framework, das in iOS 16 (2022) eingeführt und in iOS 17–18 erheblich erweitert wurde. Im Gegensatz zu SiriKit mit seinen festen Domänen ermöglicht App Intents Entwicklern, ihre eigenen Sprachbefehle für beliebige App-Aktionen zu definieren: “Siri, add milk to the shopping list in AnyList,” “Siri, schedule a meeting in Fantastical,” “Siri, turn on the living room light in Home.” Benutzerdefinierte Intents werden über das AppIntent-Protokoll mit Parametern, Phrasen und einem Bestätigungsschema definiert.
App Intents Komponenten:
App Intents vs SiriKit: der Hauptunterschied ist die Flexibilität. SiriKit ist auf 10 Domänen beschränkt, App Intents ermöglicht das Erstellen beliebiger Befehle. SiriKit benötigt ein separates Intents Extension-Target, App Intents funktioniert innerhalb der Haupt-App. SiriKit verwendet Intents.framework (Objective-C/Swift), App Intents verwendet eine neue deklarative Swift-Syntax mit @Intent- und @Parameter-Makros. Laut Apple wird App Intents in 70% der neuen Projekte mit Siri-Unterstützung ab 2025 verwendet.
Ein Beispiel zum Erstellen eines benutzerdefinierten App Intents zum Hinzufügen einer Notiz in der App. Demonstriert den modernen Ansatz mit dem App Intents Framework in iOS 16+.
import AppIntents
// 1. Benutzerdefinierter Intent zum Hinzufügen einer Notiz
struct AddNoteIntent: AppIntent {
// Befehlsname (sichtbar in Shortcuts)
static var title: LocalizedStringResource = "Notiz hinzufügen"
// Befehlsbeschreibung
static var description: LocalizedStringResource = "Erstellt eine neue Notiz in der App"
// Befehlsparameter
@Parameter(title: "Notiztext")
var noteContent: String
@Parameter(title: "Kategorie", default: "Allgemein")
var category: String
// Ausführen der Aktion
func perform() async throws -> some IntentResult {
// Erstellen einer Notiz über den lokalen Speicher
let note = Note(content: noteContent, category: category)
try await NoteStore.shared.save(note)
// Ergebnis mit einem Dialog für Siri zurückgeben
return .result(
dialog: .response("Notiz "(noteContent)" erstellt")
)
}
}
// 2. App Shortcut Provider — Registrieren von Befehlen
struct NotesShortcuts: AppShortcutsProvider {
@AppShortcutsBuilder
static var appShortcuts: [AppShortcut] {
AppShortcut(
intent: AddNoteIntent(),
phrases: [
"Notiz zu (.applicationName) hinzufügen",
"Notiz mit (.$noteContent) in (.applicationName) erstellen",
"(.$noteContent) in (.applicationName) schreiben",
]
)
}
}
// 3. SiriKit Intent für Nachrichten (klassischer Ansatz)
class MessageIntentHandler: NSObject, INSendMessageIntentHandling {
func resolveRecipients(
for intent: INSendMessageIntent,
completion: @escaping ([INPersonResolutionResult]) -> Void
) {
guard let recipients = intent.recipients else {
completion([.needsRequired()])
return
}
// Kontakte über das Adressbuch der App auflösen
let results = recipients.map { INPersonResolutionResult.success(with: $0) }
completion(results)
}
func handle(
intent: INSendMessageIntent,
completion: @escaping (INSendMessageIntentResponse) -> Void
) {
// Nachricht über die App-API senden
let response = INSendMessageIntentResponse(
code: .success, userActivity: nil
)
completion(response)
}
}
Wichtige Punkte: AppIntent — Protokoll für benutzerdefinierte Sprachbefehle; @Parameter — Makro zur Definition von Befehlsparametern; perform() — Methode, die die Aktion ausführt und ein Ergebnis mit einem Dialog für Siri zurückgibt; AppShortcutsProvider — registriert die Befehle der App in Siri und Shortcuts; INSendMessageIntentHandling — SiriKit-Protokoll zur Behandlung der Nachrichtendomäne. Trigger-Phrasen werden über .applicationName und \.$parameter für Variabilität festgelegt.
Empfehlungen zum Erstellen von Siri Intents: definieren Sie klare Trigger-Phrasen mit Aussprachevarianten; geben Sie einen informativen Dialog nach der Ausführung zurück (Erfolg/Fehler); behandeln Sie Fälle unvollständiger Parameter durch resolve-Methoden mit Klärungsanfragen; speichern Sie INInteraction nach der Ausführung für Siri-Lernen; testen Sie auf einem echten Gerät (der Simulator unterstützt Siri nicht). Für App Intents verwenden Sie @Intent mit inAppSucheKeywords zur Verbesserung der Erkennung.
Limitations: SiriKit Intents sind auf 10 Domänen beschränkt. Intents Extension läuft mit einem 5–10-Sekunden-Limit — bei Überschreitung meldet Siri einen Fehler. Siri Intent hat keine UI — die gesamte Oberfläche wird von Siri generiert. App Intents ist nur auf iOS 16+ verfügbar (~85% Geräteabdeckung ab 2026). Zur Unterstützung von iOS 13–15 muss SiriKit verwendet werden. Datenschutz: Siri überträgt keine Audioaufnahmen an die App — nur den erkannten Parametertext. Für sensible Aktionen (Zahlungen, Nachrichten) ist die Bestätigung des Benutzers obligatorisch.
| Parameter | SiriKit | App Intents |
|---|---|---|
| Minimum iOS | iOS 10 | iOS 16 |
| Domains | 10 predefined | Arbitrary |
| Language | Objective-C / Swift | Swift (macros) |
| Target | Intents Extension | Main app |
| UI | Siri UI (generation) | Siri UI (generation) |
| Confirmation | For payments/messages | Optional |
| Shortcuts | Manual | Automatic |
| Widget integration | No | WidgetIntent (iOS 17+) |
Performance and debugging: Intents Extension läuft in einem separaten Prozess mit einem Speicherlimit von 30–50 MB. Verwenden Sie zum Debuggen das Schema «Intents Extension» in Xcode, das an den Siri-Prozess angehängt ist. Protokolle werden auf der Gerätekonsole ausgegeben. App Intents wird über die Shortcuts-App auf dem Gerät debuggt. INInteraction wird lokal gespeichert und von Siri für Vorschläge verwendet — löschen Sie veraltete Interaktionen über INInteraction delete.
Häufig gestellte Fragen
Siri Intent ist ein Sprachbefehl, der eine bestimmte Aktion in einer App auslöst, ohne sie zu öffnen. Der Benutzer sagt «Siri, sende eine Nachricht auf WhatsApp» und Siri führt die Aktion über den IntentHandler of the WhatsApp app.
SiriKit (iOS 10+) ist ein älteres Framework mit vordefinierten Domänen (Nachrichten, Anrufe, Zahlungen). App Intents (iOS 16+) is a new framework that allows creating custom intents for any actions without domain limitations.
SiriKit unterstützt 10 Domänen: messages (INSendMessageIntent), calls (INStartCallIntent), payments (INSendPaymentIntent), notes, reminders, photos, workouts, trip booking, car functions, and search.
Siri erkennt Sprache und ordnet sie einem bestimmten Intent basierend auf in .intentdefinition definierten Phrasen zu. IntentHandler führt die Aktion aus und gibt das Ergebnis zurück. Der gesamte Vorgang dauert 0.5–2 seconds.
Ja, nach dem Erkennen des Intents aber vor der Ausführung zeigt Siri dem Benutzer eine Bestätigung. Der Benutzer kann die Ausführung per Sprache («Abbrechen») oder durch Berührung abbrechen. Bei Zahlungen und Nachrichten ist die Bestätigung obligatorisch.
Summary
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.
Lesen Sie auch