Intents Extension: klíčové pojmy a integrace Siri Intents v iOS

Autor: IT Sectr Publikováno: 2026-06-16 Doba čtení: 9 min

Intents Extension je rozšíření iOS, které umožňuje aplikacím třetích stran zpracovávat hlasové příkazy Siri a komunikovat se systémovými službami prostřednictvím SiriKit. Aplikace definuje vlastní intenty v Intents.intentdefinition, implementuje obslužné rutiny založené na INIntentHandler a registruje je pro rozpoznávání hlasových frází. Podle Apple Developer Documentation (2025) podporuje SiriKit více než 20 domén intentů — od zpráv a plateb po tréninky a rezervace, a od iOS 14 byla přidána podpora vlastních intentů prostřednictvím IntentsExtension.

Hlavní body

  • Intents Extension zpracovává hlasové příkazy Siri a systémové intenty jménem aplikace na pozadí
  • Intenty se definují prostřednictvím souboru Intents.intentdefinition s parametry a odpověďmi ve vizuálním editoru Xcode
  • Hlavní protokol — INIntentHandler, který implementuje metodu handle(intent:completion:) pro zpracování požadavku
  • Vlastní intenty (iOS 14+) umožňují aplikaci vytvářet vlastní typy příkazů bez vazby na standardní domény SiriKit
  • Rozšíření podporuje INUIHostedViewProviding pro zobrazení vlastního rozhraní uvnitř Siri před provedením příkazu

Co je Intents Extension v iOS

Intents Extension je rozšíření aplikace, které umožňuje Siri, Shortcuts a dalším systémovým službám volat funkcionalitu aplikace prostřednictvím standardizovaného protokolu INIntentHandler. Když uživatel řekne „Hey Siri, pošli zprávu v Messengeru X”, Siri aktivuje příslušné rozšíření, předá parametry požadavku a obdrží výsledek k vyslovení.

Na rozdíl od jiných typů rozšíření pracuje Intents Extension na pozadí bez viditelného rozhraní — Siri sama zobrazí odpověď hlasem nebo textovou kartou. Rozšíření může volitelně poskytnout vlastní rozhraní prostřednictvím INUIHostedViewProviding, které se zobrazí uvnitř Siri před provedením příkazu k potvrzení.

Rozšíření nemá přístup k obrazovce zařízení a nemůže iniciovat akce samostatně — pouze jako odpověď na požadavek od Siri nebo Shortcuts. To zajišťuje bezpečnost: uživatel má vždy kontrolu nad tím, jaké akce aplikace provádí prostřednictvím hlasových příkazů.

SiriKit a domény intentů

SiriKit je framework Apple pro integraci se Siri, představený v iOS 10. Definuje domény — kategorie akcí, které Siri může zpracovávat: zprávy, telefonní hovory, platby, seznamy, připomínky, fotografie, tréninky, rezervace a další. Každá doména má pevnou sadu intentů a odpovědí.

Standardní domény

INSendMessageIntent — odesílání zpráv. INStartWorkoutIntent — zahájení tréninku. INSearchForPhotosIntent — vyhledávání fotografií. INRequestRideIntent — objednání taxi. Každá doména definuje povinné a volitelné parametry, které Siri extrahuje z hlasového požadavku. Podle Apple pro standardní domény není vyžadován soubor intentdefinition — stačí implementovat příslušný handler.

Pro aplikace, které nespadají do standardních domén, se od iOS 14 objevila možnost vlastních intentů. Aplikace definuje vlastní typy příkazů a jejich parametry prostřednictvím Intents.intentdefinition a Siri se učí rozpoznávat odpovídající fráze na základě příkladů poskytnutých vývojářem.

Konfigurace v Info.plist

Intents Extension se registruje pomocí klíče IntentsSupported v Info.plist, kde jsou uvedeny všechny třídy intentů, které rozšíření zpracovává. Siri používá tento seznam k výběru vhodného rozšíření při rozpoznávání hlasového příkazu. Pokud několik rozšíření podporuje stejný intent, Siri nabídne uživateli výběr.

swift
class MessageIntentHandler: NSObject,
    INSendMessageIntentHandling {

    func handle(
        intent: INSendMessageIntent,
        completion: @escaping
            (INSendMessageIntentResponse) -> Void
    ) {
        let response = INSendMessageIntentResponse(
            code: .success, userActivity: nil)
        completion(response)
    }
}

INIntentHandler: zpracování požadavků

INIntentHandler — protokol, který definuje metody pro zpracování každé fáze práce intentu: rozlišení parametrů, potvrzení a provedení. Rozšíření implementuje tyto metody pro každý typ intentu, který podporuje.

Tři fáze zpracování

resolve — kontrola a upřesnění parametrů intentu. Siri volá tuto metodu pro každý parametr. Pokud parametr není zadán nebo je nesprávný, rozšíření vrátí požadavek na upřesnění a Siri položí uživateli dodatečnou otázku. confirm — potvrzení záměru. Rozšíření zkontroluje, zda může intent provést v aktuálním kontextu. handle — skutečné provedení operace a vrácení výsledku.

Rozdělení do tří fází je kritické pro hlasové UX: pokud parametr není rozpoznán, Siri akci neprovede, ale zeptá se znovu. Například, pokud uživatel řekl „Pošli zprávu Alexejovi”, ale v kontaktech jsou tři Alexejové — rozšíření vrátí resolve s požadavkem na upřesnění a Siri se zeptá „Kterému Alexejovi?”.

INIntentResponse a stavy

INIntentResponse — objekt, který rozšíření vrátí v completion po provedení intentu. Response obsahuje kód výsledku (success, failure, requiresAuthentication, inProgress) a volitelné údaje k vyslovení Siri. Kód určuje, jak Siri zareaguje: success — hlasové potvrzení, failure — chybová zpráva, inProgress — indikace dlouhotrvající operace.

swift
func resolve(
    for intent: INSendMessageIntent,
    with completion: @escaping
        (INStringResolutionResult) -> Void
) {
    if let text = intent.content, !text.isEmpty {
        completion(.success(with: text))
    } else {
        completion(.needsValue())
    }
}

Vytváření vlastních intentů

Od iOS 14 získali vývojáři možnost definovat vlastní intenty mimo standardní domény SiriKit. Vlastní intenty se popisují v souboru Intents.intentdefinition — jedná se o vizuální editor uvnitř Xcode, kde se vytvářejí nové typy příkazů s parametry a odpověďmi.

Struktura vlastního intentu

Každý vlastní intent se skládá z INIntent (definice požadavku) a INIntentResponse (definice odpovědi). INIntent obsahuje parametry s datovým typem — String, Integer, CurrencyAmount, nalezené objekty a další. INIntentResponse obsahuje vlastnosti pro vrácení výsledku a pole kódů odpovědí. Xcode automaticky generuje Swift třídy na základě této definice.

Apple doporučuje, aby vlastní intent neobsahoval více než 5 parametrů — nadměrný počet zhoršuje rozpoznávání řeči a komplikuje uživatelský zážitek. Pro každý parametr je vhodné poskytnout příklady frází v Assistant Dialog, aby se Siri naučila je správně rozpoznávat.

Příklady frází pro Siri

V Intents.intentdefinition lze pro každý intent zadat příklady vět — fráze, které uživatel řekne Siri pro aktivaci intentu. Příklady: „Objednej kávu v MojiAplikaci”, „Požádej MojíAplikaci o nalezení receptu na pizzu”. Siri používá tyto fráze pro učení rozpoznávání a nabízí je uživateli při nastavování Shortcuts.

objective-c
// Intents.intentdefinition (vizuální editor)
Intent: OrderCoffeeIntent
Parameters:
  - beverage (String)
  - size (String)
  - quantity (Integer)
Response:
  - orderNumber (String)
  - price (CurrencyAmount)
Phrases:
  - "Order coffee in MyApp"
  - "Get a latte from MyApp"

Hlasová interakce a INUIHostedViewProviding

INUIHostedViewProviding — protokol, který umožňuje Intents Extension zobrazit vlastní rozhraní uvnitř Siri před provedením příkazu. Například při objednávání taxi může rozšíření zobrazit mapu s trasou a cenou a uživatel potvrdí akci dotykem.

Konfigurace rozhraní

Protokol definuje metodu configure(with:for:completion:), kde rozšíření obdrží intent a vrátí UIViewController, který bude vložen do Siri. Velikost controlleru je omezená — maximální výška 200 bodů. Doporučuje se používat kompaktní karty s klíčovými informacemi: částka, čas, adresa.

Vlastní rozhraní je volitelné — pokud rozšíření neimplementuje INUIHostedViewProviding, Siri zobrazí standardní kartu s typem intentu a aplikací. Pro většinu intentů je standardní UI dostačující a Apple doporučuje přidávat vlastní rozhraní pouze tehdy, když skutečně zlepšuje porozumění — například pro zobrazení trasy nebo potvrzení platby.

Bezpečnost a potvrzení

Pro intenty související s financemi nebo osobními údaji je vyžadována autentizace. INIntentResponse podporuje kód requiresAuthentication, který nutí Siri požádat o Face ID nebo Touch ID před provedením. Po autentizaci obdrží rozšíření potvrzení prostřednictvím samostatného volání handle, kde se kontroluje stav autentizace.

Apple zvláště zdůrazňuje: Intents Extension by neměl vyžadovat vlastní heslo nebo biometrii — používá se systémová autentizace. Ukládání přístupových tokenů v Keychain se sdíleným přístupem mezi aplikací a rozšířením je standardní praxí pro dlouhodobé relace.

swift
class IntentViewController: UIViewController {

    func configure(
        with intent: INIntent,
        completion: @escaping
            (UIViewController?) -> Void
    ) {
        let cardView = ConfirmationCardView()
        let hostingController =
            UIHostingController(rootView: cardView)
        completion(hostingController)
    }
}

Často kladené otázky

Lze použít Intents Extension bez Siri?

Ano, rozšíření může zpracovávat intenty z aplikace Shortcuts bez hlasového vstupu. Uživatel vytvoří zkratku z navržených akcí a rozšíření ji provede bez účasti Siri.

Které verze iOS podporují vlastní intenty?

Vlastní intenty jsou k dispozici od iOS 14 a novějších. Pro iOS 10–13 jsou k dispozici pouze standardní domény SiriKit. Vlastní intenty vyžadují Intents.intentdefinition a generování Swift tříd.

Kolik času je dáno na zpracování intentu?

Siri očekává odpověď od rozšíření přibližně 15 sekund. Při překročení limitu Siri informuje uživatele, že akci nelze provést. Pro dlouhotrvající operace použijte kód odpovědi inProgress.

Jak předat autorizační token do Intents Extension?

Použijte Keychain se sdíleným přístupem přes access group mezi hlavní aplikací a rozšířením. App Group shared UserDefaults je alternativa, ale z hlediska bezpečnosti zaostává za Keychain.

Jaký je rozdíl mezi Intents Extension a Intents UI Extension?

Intents Extension zpracovává logiku — resolve, confirm, handle. Intents UI Extension poskytuje vlastní rozhraní pro zobrazení uvnitř Siri prostřednictvím INUIHostedViewProviding. Oba mohou pracovat společně.

Shrnutí

  • Intents Extension zpracovává hlasové příkazy Siri a zkratky Shortcuts prostřednictvím protokolu INIntentHandler
  • SiriKit poskytuje více než 20 standardních domén a podporuje vlastní intenty od iOS 14
  • Životní cyklus intentu zahrnuje tři fáze: resolve (upřesnění), confirm (potvrzení) a handle (provedení)
  • Vlastní intenty se vytvářejí v Intents.intentdefinition s parametry, odpověďmi a příklady frází pro Siri
  • INUIHostedViewProviding umožňuje zobrazit vlastní potvrzovací rozhraní uvnitř Siri před provedením
  • Pro finanční a soukromé akce se používá systémová autentizace prostřednictvím Face ID nebo Touch ID

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také