Table of Contents
Aufbau einer sprachaktivierten To-Do-Listen-App in iOS mit Siri-Integration
Sprachsteuerung ist zu einer wichtigen Erwartung in modernen Produktivitäts-Apps geworden. Indem Benutzer Aufgaben freihändig verwalten können, können iOS-Entwickler eine deutlich zugänglichere und effizientere To-Do-Listen-Erfahrung erstellen. Siri, der intelligente Sprachassistent von Apple, bietet ein robustes Framework für die Integration von Sprachbefehlen direkt in Ihre App. Dieser Leitfaden führt Sie durch jeden Schritt beim Aufbau einer sprachfähigen To-Do-Listen-App, von der anfänglichen Projekteinrichtung bis hin zu fortschrittlichen Intent-Handling und Bereitstellung von Best Practices. Ob Sie ein erfahrener iOS-Entwickler sind oder neu bei SiriKit, die hier beschriebenen Techniken werden Ihnen helfen, leistungsstarke, natürlichsprachige Sprachinteraktionen zu Ihrer App hinzuzufügen.
Verständnis von SiriKit und seiner Rolle im Aufgabenmanagement
SiriKit ist ein Framework, das es Ihrer App ermöglicht, ihre Funktionalität auf Siri zu erweitern. Anstatt eine separate Sprachschnittstelle zu erstellen, definieren Sie die Aktionen, die Benutzer über Sprachbefehle ausführen können, und Siri übernimmt Spracherkennung und natürliche Sprachverarbeitung. Für eine To-Do-Listen-App ermöglicht SiriKit Aktionen wie das Hinzufügen einer Aufgabe, das Entfernen einer Aufgabe, das Anzeigen aktueller Aufgaben oder sogar das Markieren einer Aufgabe als abgeschlossen.
Das Framework verwendet intents — Objekte, die Benutzeraktionen repräsentieren. Ihre App definiert benutzerdefinierte Absichten für die spezifischen Operationen, die es unterstützt. Wenn ein Benutzer einen Befehl wie "Hey Siri, füge Milch zu meiner Einkaufsliste in MyToDoApp hinzu" spricht, passt Siri den Satz mit Ihrer Absicht an, extrahiert Parameter (wie den Aufgabennamen und die Listenkennung) und übergibt die Absicht an den Handler Ihrer App. Ihre App führt dann die Aktion aus und gibt eine Antwort zurück. Siri verwendet diese Antwort, um das Ergebnis dem Benutzer zu bestätigen.
Zu den wichtigsten Vorteilen der Verwendung von SiriKit gehören:
- Handsfreie Bedienung: Benutzer können Aufgaben beim Fahren, Kochen oder Trainieren verwalten.
- Erhöhte Zugänglichkeit: Sprachsteuerung hilft Benutzern mit motorischen oder visuellen Beeinträchtigungen.
- Konsistenz mit System-Sprachinteraktionen: Ihre App fühlt sich wie ein erstklassiger iOS-Bürger an.
- Shortcut-Integration: Benutzer können benutzerdefinierte Siri-Verknüpfungen für häufig verwendete Aktionen erstellen.
SiriKit vs. andere Voice Solutions
Sie fragen sich vielleicht, ob Sie SiriKit, benutzerdefinierte Spracherkennung (über das Speech-Framework) oder einen Drittanbieter-Dienst wie Google Speech-to-Text verwenden. SiriKit ist der empfohlene Ansatz für die Integration in den Systemassistenten, da es keine separate Audioaufnahme-Benutzeroberfläche, keine Spracherkennungs-Einrichtung erfordert und auf Apple-Geräten funktioniert. Das Speech-Framework eignet sich besser für Apps, die beliebige Audiostreams verarbeiten müssen (z. B. Transkription). Für eine To-Do-Listen-App, bei der Sie nur einen festen Satz von Befehlen benötigen, ist SiriKit der klare Gewinner.
Einrichten Ihres Projekts für Siri Integration
Das Erstellen einer sprachfähigen App beginnt mit der Standard-Xcode-Projektkonfiguration.Sie müssen auch die Siri-Funktion aktivieren und eine Intents-Erweiterung hinzufügen, um Anfragen zu bearbeiten, auch wenn die App nicht ausgeführt wird.
Schritt 1: Erstellen Sie ein neues Xcode-Projekt
Starten Sie Xcode und erstellen Sie ein neues Projekt mit der Vorlage App (iOS). Geben Sie Ihrem Projekt einen Namen wie VoiceTodo und stellen Sie sicher, dass SwiftUI oder UIKit nach Ihren Wünschen ausgewählt werden.
Schritt 2: Aktivieren Sie die Siri-Fähigkeit
Klicken Sie auf der Registerkarte Ihres App-Ziels Unterschreiben & Fähigkeiten auf die Schaltfläche + Fähigkeiten und suchen Sie nach Siri. Fügen Sie die Fähigkeit hinzu und stellen Sie sicher, dass das Kontrollkästchen aktiviert ist. Dieser Schritt ist obligatorisch; ohne sie erkennt Siri Ihre Absichten nicht.
Schritt 3: Hinzufügen einer Intents-Erweiterung
Damit Siri Absichten auch dann ausführen kann, wenn Ihre App im Hintergrund ist oder nicht gestartet wird, benötigen Sie eine Intents Extension]Gehen Sie zu File > New > Target, wählen Sie Intents Extension unter dem Abschnitt “Application Extension” und benennen Sie sie (z. B. VoiceTodoIntents). Xcode erstellt ein separates Ziel mit seiner eigenen Info.plist und einer Datei. Überprüfen Sie in der Erweiterung Info.plist, ob das IntentsSupported-Array vorhanden ist und die Namen Ihrer benutzerdefinierten Absichten enthält (die wir als nächstes definieren werden).
Schritt 4: Erstellen einer Intents Definition File
Erstellen Sie in Ihrem Hauptziel eine neue Datei mit der Vorlage Intents Definition (unter Ressourcenvorlagen gefunden). Benennen Sie sie TodoIntents.intentdefinition. In dieser Datei definieren Sie Ihre benutzerdefinierten Absichten. Sie wird automatisch mit Ihrem Ziel für die Intents-Erweiterung geteilt, wenn Sie es richtig konfigurieren.
Um sicherzustellen, dass die Definitionsdatei für beide Ziele verfügbar ist, wählen Sie die Datei TodoIntents.intentdefinition im Projektnavigator aus und fügen im Dateiinspektor sowohl Ihre Haupt-App als auch die Absichtserweiterung zur Zielmitgliedschaft-Liste hinzu. Dieser Schritt wird oft übersehen, ist jedoch entscheidend für die Generierung der erforderlichen Swift-Klassen.
Definieren von Custom Intents für To-Do-Operationen
Wenn die Intents Definition-Datei bereit ist, können Sie jetzt die spezifischen Absichten erstellen, die Ihre Sprachbefehle unterstützen. Für eine grundlegende To-Do-Listen-App benötigen Sie mindestens drei Absichten: AddTaskIntent, RemoveTaskIntent und ShowTasksIntent.
Erstellen des AddTaskIntent
- Öffnen Sie TodoIntents.intentdefinition Klicken Sie unten links auf + und wählen Sie New Intent.
- Nennen Sie die Absicht .
- Fügen Sie unter Parameter einen neuen Parameter mit dem Namen vom Typ String hinzu.
- Stellen Sie den Display Name (z. B. “Task Name”) und Prompt (z. B. “Welche Aufgabe soll ich hinzufügen?”) ein.
- Wählen Sie im Abschnitt Response Success und definieren Sie eine Antwortvorlage wie “Added {{taskName}} to your to-do list.”
- Stellen Sie sicher, dass Custom Class geprüft wird und der Klassenname ist.
Erstellen der RemoveTaskIntent
Wiederholen Sie den Vorgang für ein mit einem -Parameter. Die Antwort könnte “Removed {{taskName}}” oder “{{taskName}} ist nicht gefunden.” Sie können auch einen Failure-Antworttyp für den Fall hinzufügen, dass die Aufgabe nicht existiert.
Erstellen der ShowTasksIntent
Für benötigen Sie möglicherweise keine Parameter. Verlassen Sie sich stattdessen darauf, dass die Antwort eine Liste von Aufgaben enthält. Fügen Sie im Abschnitt Antwort eine Content-Eigenschaft vom Typ String hinzu. Verwenden Sie eine Antwortvorlage wie “Sie haben {{count}}-Tasks: {{content}}”.
Generieren von Absichtsklassen
Nachdem Sie alle Absichten definiert haben, erstellen Sie Ihr Projekt. Xcode generiert automatisch Swift-Klassen für jede Absicht und ihre Antwort. Diese Klassen leben im Ordner DerivedData, sind aber im Editor sichtbar. Sie werden sie in Ihrem Handlercode verwenden.
Implementieren Sie Intent Handling in Ihrer App und Erweiterung
Jetzt, da die Absichten definiert sind, müssen Sie den Code schreiben, der sie verarbeitet, wenn Siri Ihre App aufruft.
Umgang mit Intents in der Intents Extension
Das Ziel für die Intents-Erweiterung enthält eine Standarddatei . Öffnen Sie sie und ersetzen Sie ihren Inhalt durch eine Klasse, die den generierten Intent-Handling-Protokollen entspricht. Jede Intent hat ihre eigene Handler-Methode.
import Intents
class IntentHandler: INExtension, AddTaskIntentHandling, RemoveTaskIntentHandling, ShowTasksIntentHandling {
override func handler(for intent: INIntent) -> Any? {
return self
}
// MARK: - Add Task
func handle(intent: AddTaskIntent, completion: @escaping (AddTaskIntentResponse) -> Void) {
guard let taskName = intent.taskName else {
completion(AddTaskIntentResponse.failure(taskName: "unknown"))
return
}
// Persist the task to your data store (Core Data, UserDefaults, etc.)
// For simplicity, we'll assume a shared data manager
TaskDataManager.shared.addTask(taskName: taskName, listName: intent.listName ?? "Default")
completion(AddTaskIntentResponse.success(taskName: taskName))
}
func resolveTaskName(for intent: AddTaskIntent, with completion: @escaping (INStringResolutionResult) -> Void) {
if let taskName = intent.taskName, !taskName.isEmpty {
completion(.success(with: taskName))
} else {
// Prompt user for a task name
completion(.needsValue())
}
}
// MARK: - Remove Task
func handle(intent: RemoveTaskIntent, completion: @escaping (RemoveTaskIntentResponse) -> Void) {
guard let taskName = intent.taskName else {
completion(.failure(taskName: "unknown"))
return
}
let removed = TaskDataManager.shared.removeTask(taskName: taskName)
if removed {
completion(.success(taskName: taskName))
} else {
completion(.notFound(taskName: taskName))
}
}
// MARK: - Show Tasks
func handle(intent: ShowTasksIntent, completion: @escaping (ShowTasksIntentResponse) -> Void) {
let tasks = TaskDataManager.shared.allTasks()
let taskList = tasks.map { $0.name }.joined(separator: ", ")
let count = tasks.count
let response = ShowTasksIntentResponse.success(count: count, content: taskList)
completion(response)
}
}
Shared Data Store
Der obige Code verweist auf eine hypothetische . Da die Intents Extension in einem separaten Prozess ausgeführt wird, können Sie nicht direkt auf das Hauptdatenmodell Ihrer App zugreifen. Sie müssen einen freigegebenen Container (App Group) verwenden, um Aufgaben an einem gemeinsamen Speicherort wie einer freigegebenen UserDefaults Suite oder einem Kerndatenspeicher, der im Verzeichnis der App-Gruppe gespeichert ist, zu speichern. Richten Sie eine App-Gruppenfunktion sowohl in Ihrer Haupt-App als auch in der Intents Extension ein und verwenden Sie den gleichen Bezeichner, um Aufgaben zu persistieren.
Umgang mit Absichten in der Haupt-App
Wenn sich Ihre App vorne befindet und der Benutzer eine Siri-Verknüpfung auslöst, möchten Sie möglicherweise auch Intentions direkt in der Haupt-App (ohne die Erweiterung) bearbeiten. Sie können Ihren App-Delegierten oder Szene-Delegierten an die gleichen Intention-Protokolle anpassen.
Erweiterung der Funktionalität: Bestätigung, Rückgängigmachung und Parameter
Grundlegende Absichtsbehandlung ist nur der Anfang. Um Ihre sprachfähige To-Do-Liste robust zu machen, fügen Sie Unterstützung für Bestätigungsdialoge und Parameterauflösung hinzu.
Abwicklungsmethoden
Für jeden Parameter können Sie eine -Methode implementieren, die validiert oder um Klärung bittet. Wenn der Benutzer beispielsweise “Eier hinzufügen” sagt, ohne anzugeben, welche Liste Sie haben, kann Ihre -Methode dazu auffordern: “Welche Liste möchten Sie hinzufügen?” Wenn Sie nur eine Liste haben, lösen Sie automatisch diese Liste auf.
Bestätigungsantworten
Wenn Sie die Absicht ausführen, können Sie die Antwort des Benutzers zurückgeben, um die Details zu bestätigen. Siri bittet den Benutzer, dies zu bestätigen, und wenn es bestätigt wird, wird Ihre Methode erneut mit einem Flag aufgerufen.
URL Handling für Deep Linking
Nachdem Sie eine Aktion ausgeführt haben, möchten Sie vielleicht Ihre App öffnen, um die aktualisierte Liste anzuzeigen. Ihr Intent Handler kann aufrufen, falls verfügbar, oder Ihre Haupt-App kann auf URL-Schemata reagieren. Fügen Sie Ihrer Intent-Definition eine -Eigenschaft hinzu, um eine automatische Deep-Linking zu ermöglichen.
Testen Sie Ihre Voice-fähige App
Das Testen der Siri-Integration erfordert einige Einstellungen, da gesprochene Befehle nicht direkt simuliert werden können.
Verwenden des Siri Simulators in Xcode
Führen Sie Ihre Haupt-App auf einem Simulator aus, dann stoppen Sie die App. Als nächstes führen Sie das Ziel für die Absichtserweiterung mit einem für den Simulator konfigurierten Schema aus. Xcode startet eine simulierte Siri-Schnittstelle, in der Sie Ihren Befehl eingeben können. Dies ist der schnellste Weg, um ohne physisches Gerät zu testen.
Testen mit einem echten Gerät
Um Ihre spezifischen Absichten genau zu erkennen, testen Sie auf einem echten iOS-Gerät mit iOS 14 oder höher. Nach der Installation Ihrer App öffnen Sie Einstellungen > Siri & Suche > MyToDoApp und stellen Sie sicher, dass die Absichten umgeschaltet werden. Sagen Sie "Hey Siri, fügen Sie Schreibcode zu meiner To-Do-Liste in MyToDoApp hinzu" und überprüfen Sie das Ergebnis.
Gemeinsame Themen und Debugging
- Intent nicht erkannt: Überprüfen Sie, ob der Info.plist der Intents Extension die Intent-Klassennamen unter IntentsSupported enthält.
- Daten nicht geteilt: Stellen Sie sicher, dass beide Ziele zur gleichen App-Gruppe gehören und dass der Datenspeicherpfad korrekt ist.
- Response not speak: Use response templates that include variables; Siri liest sie laut vor.
- Parameter fehlt: Implementieren Sie Auflösungsmethoden, um mehrdeutige Eingaben zu verarbeiten.
Deployment und App Store Überlegungen
Wenn Sie Ihre App im App Store einreichen, müssen Sie die Siri-Fähigkeit deklarieren. Im App Store Connect fügen Sie in den Bewertungshinweisen eine Notiz hinzu, in der Sie erklären, was Ihre Absichten tun, und geben Testbefehle an. Apple wird wahrscheinlich mit einem echten Gerät testen, also stellen Sie sicher, dass alles korrekt funktioniert.
Um die Benutzerakzeptanz zu maximieren, sollten Sie die folgenden Best Practices berücksichtigen:
- Onboard-Benutzer: Zeigen Sie ein kurzes Tutorial zu verfügbaren Sprachbefehlen an, wenn die App zum ersten Mal gestartet wird.
- Unterstützungs-Shortcuts: Ermöglichen Sie Benutzern, benutzerdefinierte Stimmkombinationen für bestimmte Aufgaben zu erstellen (z. B. “Hey Siri, füge Lebensmittel hinzu”) über und .
- Lokalisiere deine Absichten: Bietet lokalisierte Eingabeaufforderungen und Antwortvorlagen für verschiedene Sprachen an.
- Verwalte Fehler anmutig: Gebe immer eine sinnvolle Antwort zurück – auch wenn die Aufgabe fehlschlägt – um den Benutzer zu führen.
Erweiterte Features und nächste Schritte
Sobald Sie die Basis-sprachfähige To-Do-Liste in Betrieb haben, können Sie sie erweitern mit:
- Natürliche Sprachdatenanalyse: Lassen Sie die Benutzer sagen: “Milch für morgen kaufen hinzufügen” und legen Sie automatisch ein Fälligkeitsdatum mit fest.
- Gruppen- und Tag-Unterstützung: Fügen Sie Parameter für Kategorien wie oder hinzu.
- Inter-App-Integration: Verwenden Sie SiriKits Workout, Media oder andere Domains, wenn Ihre App über To-Do-Listen hinaus erweitert wird.
- Benutzerdefiniertes Vokabular: Geben Sie ein Vokabular an, um Siri zu trainieren, app-spezifische Sätze wie “meine Einkaufsliste” oder “Arbeitsaufgaben” zu erkennen.
Schlussfolgerung
Der Aufbau einer sprachfähigen To-Do-Listen-App mit Siri-Integration ist ein praktischer Weg, um die Produktivität und Zugänglichkeit der Benutzer zu verbessern. Durch die Definition benutzerdefinierter Absichten, die Implementierung von Handlern in einer dedizierten Erweiterung und die Verwendung eines gemeinsamen Datenspeichers können Sie eine nahtlose Freisprecherfahrung schaffen. Die in diesem Handbuch beschriebenen Schritte - vom Projektaufbau bis zum Testen und Einreichen - geben Ihnen eine solide Grundlage. Wenn Sprachinteraktion immer häufiger wird, wird das Hinzufügen von Siri-Integration zu Ihrer App im App Store unterscheiden. Beginnen Sie noch heute mit SiriKit zu experimentieren und lassen Sie Ihre Benutzer ihre Aufgaben so einfach wie das Sprechen verwalten.
Weitere Details finden Sie in der offiziellen SiriKit Dokumentation und im Shortcuts Guide. Wenn Sie neu in der iOS Entwicklung sind, lesen Sie auch Start Developing iOS Apps (Swift) für grundlegende Konzepte.