Siri Intent: mahahalagang konsepto, SiriKit at integrasyon sa Siri

May-akda: IT Sectr Nai-publish: 2026-02-15 Oras ng pagbabasa: 9 min

Siri Intent — mechanizm integracji aplikacji iOS z asystentem głosowym Siri, umożliwiający użytkownikom wykonywanie działań głosem bez otwierania aplikacji. Programowanie odbywa się w Swift z użyciem frameworków Intents (Intents.framework) i SiriKit. Od iOS 16 pojawił się App Intents — nowy, bardziej elastyczny framework do tworzenia niestandardowych poleceń głosowych. Siri Intent obsługuje 10 domen (wiadomości, połączenia, płatności, notatki, treningi i inne) i umożliwia aplikacji przetwarzanie zapytań głosowych przez IntentHandler. Omówimy kluczowe pojęcia, architekturę i przykłady kodu.

Najważniejsze

  • Siri Intent — polecenie głosowe wykonujące działanie w aplikacji przez Siri bez jej otwierania
  • SiriKit (iOS 10+) — framework z predefiniowanymi domenami (wiadomości, połączenia, płatności)
  • App Intents (iOS 16+) — nowy framework do tworzenia dowolnych niestandardowych poleceń głosowych
  • IntentHandler — handler wykonujący działanie aplikacji w odpowiedzi na polecenie głosowe Siri
  • INInteraction — obiekt reprezentujący wynik wykonania intentu, zapisywany w Siri do uczenia się

Co to jest Siri Intent

Siri Intent — to mechanizm umożliwiający aplikacji iOS przetwarzanie poleceń głosowych wypowiadanych przez użytkownika przez Siri. Gdy użytkownik mówi «Siri, wyślij wiadomość do Telegram do Jana», Siri rozpoznaje intent (INSendMessageIntent), określa aplikację, która może go obsłużyć (Telegram), przekazuje parametry (kontakt «Jan», treść wiadomości) i uruchamia IntentHandler aplikacji. Cały proces trwa 0,5–2 sekund i nie wymaga otwierania aplikacji.

Architektura Siri Intent obejmuje trzy komponenty. Pierwszy — plik .intentdefinition opisujący strukturę intentu: parametry (String, Integer, INPerson), frazy wyzwalające i odpowiedzi. Drugi — IntentHandler implementujący protokół obsługi: otrzymuje parametry, wykonuje działanie (np. wysyła wiadomość przez API aplikacji) i zwraca INInteraction z kodem wyniku. Trzeci — Intents Extension, osobny target w Xcode, działający we własnym procesie. Siri uruchamia Intents Extension przy zapytaniu głosowym, przekazuje mu dane i otrzymuje wynik. Extension nie ma UI — wykonuje się w tle i musi zakończyć w ciągu 5–10 sekund.

Zastosowania Siri Intent: wysyłanie wiadomości (INSendMessageIntent), wykonywanie połączeń (INStartCallIntent), wysyłanie płatności (INSendPaymentIntent), tworzenie notatek (INCreateNoteIntent), treningi (INStartWorkoutIntent), zdjęcia (INSearchForPhotosIntent), rezerwacja podróży (INBookRestaurantReservationIntent), funkcje samochodowe (INSetCarLockStatusIntent). Każda domena ma ścisły schemat parametrów i ograniczenia określone przez Apple dla bezpieczeństwa.

SiriKit: architektura i domeny

SiriKit — framework przedstawiony przez Apple w iOS 10 (2016). Zapewnia gotowe domeny (Intents) dla typowych działań: wiadomości, połączenia, płatności, notatki, przypomnienia, zdjęcia, treningi, rezerwacje, funkcje samochodowe, wyszukiwanie. Dla każdej domeny Apple określiła zestaw klas Intent (INSendMessageIntent, INStartCallIntent), które aplikacja implementuje przez IntentHandler. SiriKit automatycznie generuje UI-potwierdzenie przed wykonaniem (dla płatności i wiadomości potwierdzenie jest obowiązkowe).

Domeny SiriKit:

  • Wiadomości (Messages) — INSendMessageIntent, INSearchForMessagesIntent, INSetMessageAttributeIntent
  • Połączenia (Calls) — INStartCallIntent, INSearchForCallHistoryIntent
  • Płatności (Payments) — INSendPaymentIntent, INRequestPaymentIntent
  • Notatki (Notes) — INCreateNoteIntent, INSearchForNotesIntent, INAddTasksIntent
  • Przypomnienia (Reminders) — INCreateTaskListIntent, INAddTasksIntent, INSetTaskAttributeIntent
  • Treningi (Workouts) — INStartWorkoutIntent, INPauseWorkoutIntent, INEndWorkoutIntent
  • Zdjęcia (Photos) — INSearchForPhotosIntent, INStartPhotoPlaybackIntent
  • Samochód (CarPlay) — INSetCarLockStatusIntent, INGetCarLockStatusIntent
  • Wyszukiwanie (Search) — INSearchForMessagesIntent, INSearchForNotebookItemsIntent

Ograniczenia SiriKit: programista nie może tworzyć własnych domen — może używać tylko predefiniowanych. To ograniczenie zostało rozwiązane w iOS 16 wraz z pojawieniem się App Intents, który umożliwia tworzenie dowolnych poleceń głosowych dla dowolnych działań aplikacji.

App Intents: nowy framework

App Intents — framework Apple, przedstawiony w iOS 16 (2022) i znacznie rozszerzony w iOS 17–18. W przeciwieństwie do SiriKit ze stałymi domenami, App Intents umożliwia programiście definiowanie własnych poleceń głosowych dla dowolnych działań aplikacji: «Siri, dodaj mleko do listy zakupów w AnyList», «Siri, zapisz spotkanie w Fantastical», «Siri, włącz światło w salonie w Home». Niestandardowe intenty definiuje się przez protokół AppIntent z określeniem parametrów, fraz i schematu potwierdzenia.

Komponenty App Intents:

  • AppIntent — protokół do opisu działania: title, description, parameters, perform()
  • IntentParameter — parametry polecenia z typami (String, Int, URL, Entity, Measurement)
  • IntentDialog — dialogi dla Siri: zapytanie o potwierdzenie, odpowiedź o sukcesie lub błędzie
  • WidgetIntent — podzbiór App Intents do obsługi kliknięć w widżetach (iOS 17+)
  • Shortcuts — App Intents automatycznie integrują się z aplikacją Shortcuts

App Intents vs SiriKit: główna różnica — elastyczność. SiriKit jest ograniczony do 10 domen, App Intents umożliwia tworzenie dowolnych poleceń. SiriKit wymaga osobnego targetu Intents Extension, App Intents działa wewnątrz głównej aplikacji. SiriKit używa Intents.framework (Objective-C/Swift), App Intents — nowej deklaratywnej składni Swift z makrami @Intent, @Parameter. Według danych Apple, App Intents jest używany w 70% nowych projektów z obsługą Siri na 2025 rok.

Przykład kodu: Swift Intents

Przykład tworzenia niestandardowego App Intent do dodawania notatki w aplikacji. Demonstruje nowoczesne podejście z użyciem frameworka App Intents w iOS 16+.

swift
import AppIntents

// 1. Custom Intent para sa pagdaragdag ng tala
struct AddNoteIntent: AppIntent {
    // Pangalan ng command (nakikita sa Shortcuts)
    static var title: LocalizedStringResource = "Magdagdag ng tala"

    // Paglalarawan ng command
    static var description: LocalizedStringResource = "Gumagawa ng bagong tala sa app"

    // Mga parameter ng command
    @Parameter(title: "Teksto ng tala")
    var noteContent: String

    @Parameter(title: "Kategorya", default: "Pangkalahatan")
    var category: String

    // Pagpapatupad ng aksyon
    func perform() async throws -> some IntentResult {
        // Gumagawa ng tala sa pamamagitan ng lokal na imbakan
        let note = Note(content: noteContent, category: category)
        try await NoteStore.shared.save(note)

        // Ibinabalik ang resulta na may dialog para sa Siri
        return .result(
            dialog: .response("Tala \"\(noteContent)\" ay ginawa")
        )
    }
}

// 2. App Shortcut Provider — pagpaparehistro ng mga command
struct NotesShortcuts: AppShortcutsProvider {
    @AppShortcutsBuilder
    static var appShortcuts: [AppShortcut] {
        AppShortcut(
            intent: AddNoteIntent(),
            phrases: [
                "Magdagdag ng tala sa \(.applicationName)",
                "Gumawa ng tala gamit ang \(.\$noteContent) sa \(.applicationName)",
                "Isulat ang \(.\$noteContent) sa \(.applicationName)",
            ]
        )
    }
}

// 3. SiriKit Intent para sa mga mensahe (klasikong approach)
class MessageIntentHandler: NSObject, INSendMessageIntentHandling {

    func resolveRecipients(
        for intent: INSendMessageIntent,
        completion: @escaping ([INPersonResolutionResult]) -> Void
    ) {
        guard let recipients = intent.recipients else {
            completion([.needsRequired()])
            return
        }
        // Niresolba ang mga contact sa pamamagitan ng Address Book ng app
        let results = recipients.map { INPersonResolutionResult.success(with: $0) }
        completion(results)
    }

    func handle(
        intent: INSendMessageIntent,
        completion: @escaping (INSendMessageIntentResponse) -> Void
    ) {
        // Nagpapadala ng mensahe sa pamamagitan ng API ng app
        let response = INSendMessageIntentResponse(
            code: .success, userActivity: nil
        )
        completion(response)
    }
}

Kluczowe elementy: AppIntent — protokół dla niestandardowego polecenia głosowego; @Parameter — makro określające parametry polecenia; perform() — metoda wykonująca działanie i zwracająca wynik z dialogiem dla Siri; AppShortcutsProvider — rejestruje polecenia aplikacji w Siri i Shortcuts; INSendMessageIntentHandling — protokół SiriKit do obsługi domeny wiadomości. Frazy wyzwalające są określane przez .applicationName i \.$parameter dla różnorodności.

Zalecenia i ograniczenia

Zalecenia dotyczące tworzenia Siri Intent: definiuj zrozumiałe frazy wyzwalające z wariantami wymowy; zwracaj informacyjny dialog po wykonaniu (sukces/błąd); obsługuj przypadki niekompletnych parametrów przez metody resolve z prośbą o doprecyzowanie; zapisuj INInteraction po wykonaniu do uczenia Siri; testuj na rzeczywistym urządzeniu (symulator nie obsługuje Siri). Dla App Intents używaj @Intent z inAppSearchKeywords dla lepszego rozpoznawania.

Ograniczenia: SiriKit Intents są ograniczone do 10 domen. Intents Extension wykonuje się z limitem 5–10 sekund — po przekroczeniu Siri zgłasza błąd. Siri Intent nie ma UI — cały interfejs jest generowany przez Siri. App Intents są dostępne tylko na iOS 16+ (pokrycie ~85% urządzeń na 2026). Do obsługi iOS 13–15 należy używać SiriKit. Prywatność: Siri nie przekazuje aplikacji nagrania audio — tylko rozpoznany tekst parametrów. Dla poufnych działań (płatności, wiadomości) wymagane jest potwierdzenie od użytkownika.

ParametrSiriKitApp Intents
Minimalne iOSiOS 10iOS 16
Domeny10 predefiniowanychDowolne
JęzykObjective-C / SwiftSwift (makra)
TargetIntents ExtensionGłówna aplikacja
UISiri UI (generacja)Siri UI (generacja)
PotwierdzenieDla płatności/wiadomościOpcjonalnie
ShortcutsRęcznieAutomatycznie
Integracja WidgetNieWidgetIntent (iOS 17+)

Wydajność i debugowanie: Intents Extension uruchamia się w oddzielnym procesie z ograniczeniem pamięci 30–50 MB. Do debugowania użyj schematu «Intents Extension» w Xcode z dołączeniem do procesu Siri. Logi są wypisywane w konsoli urządzenia. App Intents debuguje się przez aplikację Shortcuts na urządzeniu. INInteraction jest zapisywany lokalnie i używany przez Siri do sugestii — usuwaj nieaktualne interakcje przez INInteraction delete.

Często zadawane pytania

Co to jest Siri Intent w prostych słowach?

Siri Intent to polecenie głosowe, które uruchamia określone działanie w aplikacji bez jej otwierania. Użytkownik mówi «Siri, wyślij wiadomość w WhatsApp» a Siri wykonuje działanie przez IntentHandler aplikacji WhatsApp.

Czym różni się SiriKit od App Intents?

SiriKit (iOS 10+) — stary framework z predefiniowanymi domenami (wiadomości, połączenia, płatności). App Intents (iOS 16+) — nowy framework umożliwiający tworzenie niestandardowych intentów dla dowolnych działań bez ograniczenia domenami.

Jakie domeny obsługuje SiriKit?

SiriKit obsługuje 10 domen: wiadomości (INSendMessageIntent), połączenia (INStartCallIntent), płatności (INSendPaymentIntent), notatki, przypomnienia, zdjęcia, treningi, rezerwacja podróży, funkcje samochodowe i wyszukiwanie.

Jak Siri Intent przetwarza wprowadzanie głosowe?

Siri rozpoznaje mowę i dopasowuje ją do określonego Intent na podstawie fraz zdefiniowanych w .intentdefinition. IntentHandler wykonuje działanie i zwraca wynik. Cały proces trwa 0,5–2 sekund.

Czy można anulować wykonanie Siri Intent?

Tak, po rozpoznaniu intentu, ale przed jego wykonaniem, Siri pokazuje użytkownikowi potwierdzenie. Użytkownik może anulować wykonanie głosem («Anuluj») lub dotknięciem. Dla płatności i wiadomości potwierdzenie jest obowiązkowe.

Podsumowanie

  • Siri Intent — mechanizm integracji aplikacji z Siri przez polecenia głosowe bez otwierania ekranu
  • SiriKit (iOS 10+) — framework z 10 stałymi domenami (wiadomości, połączenia, płatności) przez Intents Extension
  • App Intents (iOS 16+) — nowy framework do dowolnych niestandardowych poleceń z makrami @Intent i @Parameter
  • IntentHandler — wykonuje działanie aplikacji, otrzymuje parametry z Siri i zwraca INInteraction z wynikiem
  • Frazy wyzwalające są określane przez .intentdefinition (SiriKit) lub @AppShortcutsBuilder (App Intents)
  • Ograniczenia — limit wykonania 5–10 sekund, pamięć 30–50 MB, potwierdzenie dla wrażliwych działań
  • App Intents — preferowane podejście dla iOS 16+, SiriKit — dla obsługi iOS 13–15

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din