Intents Extension: kulcsfogalmak és a Siri Intents integrációja iOS-ben

Szerző: IT Sectr Megjelenés: 2026-06-16 Olvasási idő: 9 perc

Intents Extension egy iOS-bővítmény, amely lehetővé teszi harmadik féltől származó alkalmazások számára a Siri hangutasítások feldolgozását és a rendszerszolgáltatásokkal való interakciót a SiriKit segítségével. Az alkalmazás saját intenteket definiál az Intents.intentdefinition fájlban, implementálja a kezelőket az INIntentHandler alapján, és regisztrálja azokat a hangutasítások felismeréséhez. Az Apple Developer Documentation (2025) szerint a SiriKit több mint 20 intent domaint támogat — az üzenetektől és fizetésektől az edzésekig és foglalásokig, az iOS 14-től pedig hozzáadásra került az egyedi intentek támogatása az IntentsExtensionen keresztül.

Főbb pontok

  • Intents Extension feldolgozza a Siri hangutasításait és rendszerintenteket az alkalmazás nevében háttérben
  • Az intentek az Intents.intentdefinition fájlon keresztül kerülnek meghatározásra paraméterekkel és válaszokkal az Xcode vizuális szerkesztőjében
  • A fő protokoll — INIntentHandler, amely implementálja a handle(intent:completion:) metódust a kérés feldolgozásához
  • Egyedi intentek (iOS 14+) lehetővé teszik az alkalmazás számára, hogy saját parancstípusokat hozzon létre a SiriKit szabványos domainjeihez való kötődés nélkül
  • A bővítmény támogatja az INUIHostedViewProviding-et az egyedi felület megjelenítéséhez a Siri-n belül a parancs végrehajtása előtt

Mi az Intents Extension iOS-ben

Intents Extension egy alkalmazásbővítmény, amely lehetővé teszi a Siri, a Shortcuts és más rendszerszolgáltatások számára, hogy a szabványosított INIntentHandler protokollon keresztül meghívják az alkalmazás funkcióit. Amikor a felhasználó azt mondja: „Hé Siri, küldj üzenetet az X Üzenetküldőben”, a Siri aktiválja a megfelelő bővítményt, továbbítja a kérés paramétereit, és megkapja az eredményt a kimondáshoz.

Más bővítménytípusokkal ellentétben az Intents Extension a háttérben működik látható felület nélkül — a Siri maga jeleníti meg a választ hanggal vagy szöveges kártyával. A bővítmény opcionálisan egyedi felületet biztosíthat az INUIHostedViewProviding segítségével, amely a Siri-n belül jelenik meg a parancs végrehajtása előtt a megerősítéshez.

A bővítmény nem fér hozzá a készülék képernyőjéhez, és nem kezdeményezhet önállóan műveleteket — csak a Siri vagy a Shortcuts kérésére válaszolva. Ez biztosítja a biztonságot: a felhasználó mindig ellenőrzi, hogy az alkalmazás milyen műveleteket hajt végre hangutasításokon keresztül.

SiriKit és intent domaine-ok

SiriKit az Apple keretrendszere a Siri-vel való integrációhoz, amely az iOS 10-ben került bevezetésre. Meghatározza a domaine-okat — a Siri által feldolgozható műveletek kategóriáit: üzenetek, telefonhívások, fizetések, listák, emlékeztetők, fényképek, edzések, foglalások és mások. Minden domainnek fix intent- és válaszkészlete van.

Szabványos domaine-ok

INSendMessageIntent — üzenetek küldése. INStartWorkoutIntent — edzés kezdése. INSearchForPhotosIntent — fényképek keresése. INRequestRideIntent — taxi rendelése. Minden domain meghatározza a kötelező és opcionális paramétereket, amelyeket a Siri kinyer a hangutasításból. Az Apple szerint a szabványos domaine-okhoz nem szükséges intentdefinition fájl — elegendő a megfelelő handler implementálása.

A szabványos domaine-okba nem tartozó alkalmazások számára az iOS 14-től lehetőség nyílt egyedi intentek létrehozására. Az alkalmazás saját parancstípusokat és azok paramétereit definiálja az Intents.intentdefinition segítségével, a Siri pedig megtanulja felismerni a megfelelő kifejezéseket a fejlesztő által biztosított példák alapján.

Konfiguráció az Info.plist-ben

Az Intents Extension az Info.plist-ben található IntentsSupported kulcson keresztül regisztrálódik, ahol felsorolásra kerül az összes intent osztály, amelyet a bővítmény feldolgoz. A Siri ezt a listát használja a megfelelő bővítmény kiválasztásához egy hangutasítás felismerésekor. Ha több bővítmény támogatja ugyanazt az intentet, a Siri választási lehetőséget kínál a felhasználónak.

swift
class MessageIntentHandler: NSObject,
    INSendMessageIntentHandling {

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

INIntentHandler: kérések feldolgozása

INIntentHandler — a protokoll, amely metódusokat határoz meg az intent munka egyes szakaszainak feldolgozásához: paraméterek feloldása, megerősítés és végrehajtás. A bővítmény implementálja ezeket a metódusokat minden általa támogatott intent típushoz.

Három feldolgozási szakasz

resolve — az intent paramétereinek ellenőrzése és pontosítása. A Siri ezt a metódust hívja meg minden paraméterhez. Ha egy paraméter nincs megadva vagy hibás, a bővítmény pontosítási kérelmet küld vissza, és a Siri további kérdést tesz fel a felhasználónak. confirm — a szándék megerősítése. A bővítmény ellenőrzi, hogy végre tudja-e hajtani az intentet az aktuális kontextusban. handle — a művelet tényleges végrehajtása és az eredmény visszaadása.

A három szakaszra bontás kritikus a hangalapú UX szempontjából: ha egy paraméter nem kerül felismerésre, a Siri nem hajtja végre a műveletet, hanem visszakérdez. Például, ha a felhasználó azt mondta: „Küldj üzenetet Alekszejnek”, de három Alekszej van a névjegyzékben — a bővítmény resolve-ot küld vissza pontosítási kérelemmel, és a Siri megkérdezi: „Melyik Alekszejnek?”.

INIntentResponse és státuszok

INIntentResponse — az objektum, amelyet a bővítmény a completion-ben ad vissza az intent végrehajtása után. A Response tartalmazza az eredménykódot (success, failure, requiresAuthentication, inProgress) és opcionális adatokat a Siri általi kimondáshoz. A kód határozza meg, hogyan reagál a Siri: success — hangalapú megerősítés, failure — hibaüzenet, inProgress — hosszú ideig tartó művelet jelzése.

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())
    }
}

Egyedi intentek létrehozása

Az iOS 14-től kezdve a fejlesztők lehetőséget kaptak saját intentek meghatározására a SiriKit szabványos domainjein kívül. Az egyedi intentek az Intents.intentdefinition fájlban kerülnek leírásra — ez egy vizuális szerkesztő az Xcode-on belül, ahol új parancstípusok hozhatók létre paraméterekkel és válaszokkal.

Egyedi intent felépítése

Minden egyedi intent INIntent-ből (a kérés meghatározása) és INIntentResponse-ból (a válasz meghatározása) áll. Az INIntent paramétereket tartalmaz adattípusokkal — String, Integer, CurrencyAmount, megtalált objektumok és mások. Az INIntentResponse tulajdonságokat tartalmaz az eredmény visszaadásához és a válaszkódok tömbjét. Az Xcode automatikusan generál Swift osztályokat e meghatározás alapján.

Az Apple azt javasolja, hogy egy egyedi intent ne tartalmazzon 5 paraméternél többet — a túlzott szám rontja a hangfelismerést és bonyolítja a felhasználói élményt. Minden paraméterhez érdemes példamondatokat megadni az Assistant Dialog-ban, hogy a Siri megtanulja azokat helyesen felismerni.

Példamondatok a Siri számára

Az Intents.intentdefinition fájlban minden intenthez megadhatók példamondatok — kifejezések, amelyeket a felhasználó a Siri-nek mond az intent aktiválásához. Példák: „Rendelj kávét a SajátAlkalmazásomban”, „Kérd meg a SajátAlkalmazásomat, hogy találjon egy pizza receptet”. A Siri ezeket a kifejezéseket használja a felismerés tanulásához, és felkínálja azokat a felhasználónak a Shortcuts beállításakor.

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

Hanginterakció és INUIHostedViewProviding

INUIHostedViewProviding — a protokoll, amely lehetővé teszi az Intents Extension számára, hogy egyedi felületet jelenítsen meg a Siri-n belül a parancs végrehajtása előtt. Például taxi rendelésekor a bővítmény megjeleníthet egy térképet az útvonallal és költséggel, a felhasználó pedig érintéssel erősíti meg a műveletet.

A felület konfigurációja

A protokoll meghatározza a configure(with:for:completion:) metódust, ahol a bővítmény megkapja az intentet és visszaad egy UIViewController-t, amely beágyazásra kerül a Siri-be. A vezérlő mérete korlátozott — maximális magasság 200 pont. Javasolt kompakt kártyák használata kulcsinformációkkal: összeg, idő, cím.

Az egyedi felület opcionális — ha a bővítmény nem implementálja az INUIHostedViewProviding-et, a Siri egy szabványos kártyát jelenít meg az intent típusával és az alkalmazással. A legtöbb intent esetében a szabványos UI elegendő, és az Apple csak akkor javasol egyedi felület hozzáadását, ha az valóban javítja a megértést — például útvonal megjelenítéséhez vagy fizetés megerősítéséhez.

Biztonság és megerősítés

A pénzügyekkel vagy személyes adatokkal kapcsolatos intentekhez hitelesítés szükséges. Az INIntentResponse támogatja a requiresAuthentication kódot, amely arra kényszeríti a Siri-t, hogy Face ID vagy Touch ID kérést indítson a végrehajtás előtt. A hitelesítés után a bővítmény megerősítést kap egy külön handle híváson keresztül, ahol a hitelesítés állapota ellenőrzésre kerül.

Az Apple külön hangsúlyozza: az Intents Extension nem kérhet saját jelszót vagy biometrikus adatokat — rendszerhitelesítést kell használni. A hozzáférési tokenek Keychain-ben való tárolása megosztott hozzáféréssel az alkalmazás és a bővítmény között a szokásos gyakorlat a hosszú élettartamú munkamenetekhez.

swift
class IntentViewController: UIViewController {

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

Gyakran Ismételt Kérdések

Használható az Intents Extension Siri nélkül?

Igen, a bővítmény feldolgozhat intenteket a Shortcuts alkalmazásból hangbemenet nélkül. A felhasználó létrehoz egy gyorsparancsot a javasolt műveletekből, és a bővítmény végrehajtja azt a Siri részvétele nélkül.

Mely iOS verziók támogatják az egyedi intenteket?

Egyedi intentek az iOS 14-től és újabb verzióktól érhetők el. Az iOS 10–13 esetében csak a szabványos SiriKit domaine-ok állnak rendelkezésre. Az egyedi intentek Intents.intentdefinition-t és Swift osztályok generálását igénylik.

Mennyi idő áll rendelkezésre az intent feldolgozására?

A Siri körülbelül 15 másodpercig vár a bővítmény válaszára. A határ túllépése esetén a Siri tájékoztatja a felhasználót, hogy a művelet nem sikerült. Hosszú ideig tartó műveletekhez használja az inProgress válaszkódot.

Hogyan továbbítható az engedélyezési token az Intents Extension-be?

Használja a Keychain-t megosztott hozzáféréssel egy access group-on keresztül a fő alkalmazás és a bővítmény között. Az App Group shared UserDefaults alternatíva, de biztonság szempontjából elmarad a Keychain-től.

Mi a különbség az Intents Extension és az Intents UI Extension között?

Intents Extension feldolgozza a logikát — resolve, confirm, handle. Intents UI Extension egyedi felületet biztosít a Siri-n belüli megjelenítéshez az INUIHostedViewProviding segítségével. Mindkettő együtt is működhet.

Összegzés

  • Intents Extension feldolgozza a Siri hangutasításait és a Shortcuts gyorsparancsait az INIntentHandler protokollon keresztül
  • SiriKit több mint 20 szabványos domaint kínál és támogatja az egyedi intenteket iOS 14-től
  • Az intent életciklusa három szakaszból áll: resolve (pontosítás), confirm (megerősítés) és handle (végrehajtás)
  • Egyedi intentek az Intents.intentdefinition-ben jönnek létre paraméterekkel, válaszokkal és példamondatokkal a Siri számára
  • INUIHostedViewProviding lehetővé teszi egyedi megerősítő felület megjelenítését a Siri-n belül a végrehajtás előtt
  • Pénzügyi és privát műveletekhez rendszerhitelesítés használatos Face ID vagy Touch ID segítségével

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is