Intents Extension: kernconcepten en Siri Intents-integratie in iOS

Auteur: IT Sectr Gepubliceerd: 2026-06-16 Leestijd: 9 min

Intents Extension is een iOS-extensie waarmee apps van derden Siri-spraakopdrachten kunnen verwerken en via SiriKit met systeemdiensten kunnen communiceren. De app definieert eigen intents in Intents.intentdefinition, implementeert handlers op basis van INIntentHandler en registreert ze voor herkenning van spraakzinnen. Volgens Apple Developer Documentation (2025) ondersteunt SiriKit meer dan 20 intentdomeinen — van berichten en betalingen tot trainingen en reserveringen, en met iOS 14 is ondersteuning voor aangepaste intents via IntentsExtension toegevoegd.

Belangrijkste punten

  • Intents Extension verwerkt Siri-spraakopdrachten en systeemintents namens de app op de achtergrond
  • Intents worden gedefinieerd via het Intents.intentdefinition-bestand met parameters en antwoorden in de visuele editor van Xcode
  • Het hoofdprotocol — INIntentHandler, dat de methode handle(intent:completion:) implementeert voor het verwerken van verzoeken
  • Aangepaste intents (iOS 14+) stellen de app in staat eigen commandotypen te creëren zonder binding aan de standaard SiriKit-domeinen
  • De extensie ondersteunt INUIHostedViewProviding voor het tonen van een aangepaste interface binnen Siri vóór het uitvoeren van de opdracht

Wat is Intents Extension in iOS

Intents Extension is een app-extensie waarmee Siri, Shortcuts en andere systeemdiensten de functionaliteit van de app kunnen aanroepen via het gestandaardiseerde INIntentHandler-protocol. Wanneer de gebruiker zegt „Hé Siri, stuur een bericht in Messenger X”, activeert Siri de bijbehorende extensie, geeft de verzoekparameters door en ontvangt het resultaat om uit te spreken.

In tegenstelling tot andere extensietypen werkt Intents Extension op de achtergrond zonder zichtbare interface — Siri toont zelf het antwoord met spraak of een tekstkaart. De extensie kan optioneel een aangepaste interface bieden via INUIHostedViewProviding, die binnen Siri wordt weergegeven vóór het uitvoeren van de opdracht ter bevestiging.

De extensie heeft geen toegang tot het apparaatscherm en kan niet zelfstandig acties initiëren — alleen als reactie op een verzoek van Siri of Shortcuts. Dit garandeert de veiligheid: de gebruiker heeft altijd controle over welke acties de app uitvoert via spraakopdrachten.

SiriKit en intentdomeinen

SiriKit is het Apple-framework voor integratie met Siri, geïntroduceerd in iOS 10. Het definieert domeinen — categorieën van acties die Siri kan verwerken: berichten, telefoongesprekken, betalingen, lijsten, herinneringen, foto's, trainingen, reserveringen en andere. Elk domein heeft een vaste set intents en antwoorden.

Standaarddomeinen

INSendMessageIntent — berichten verzenden. INStartWorkoutIntent — training starten. INSearchForPhotosIntent — foto's zoeken. INRequestRideIntent — taxi bestellen. Elk domein definieert verplichte en optionele parameters die Siri uit het spraakverzoek haalt. Volgens Apple is voor standaarddomeinen geen intentdefinition-bestand nodig — het implementeren van de bijbehorende handler is voldoende.

Voor apps die niet in de standaarddomeinen vallen, is sinds iOS 14 de mogelijkheid van aangepaste intents ontstaan. De app definieert eigen commandotypen en hun parameters via Intents.intentdefinition, en Siri leert de bijbehorende zinnen te herkennen op basis van door de ontwikkelaar verstrekte voorbeelden.

Configuratie in Info.plist

Intents Extension wordt geregistreerd via de sleutel IntentsSupported in Info.plist, waar alle intentklassen worden vermeld die de extensie verwerkt. Siri gebruikt deze lijst om de juiste extensie te selecteren bij het herkennen van een spraakopdracht. Als meerdere extensies dezelfde intent ondersteunen, biedt Siri de gebruiker een keuze.

swift
class MessageIntentHandler: NSObject,
    INSendMessageIntentHandling {

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

INIntentHandler: verwerken van verzoeken

INIntentHandler — het protocol dat methoden definieert voor het verwerken van elke fase van de intent: het oplossen van parameters, bevestigen en uitvoeren. De extensie implementeert deze methoden voor elk type intent dat zij ondersteunt.

Drie verwerkingsfasen

resolve — controle en verduidelijking van intentparameters. Siri roept deze methode aan voor elke parameter. Als een parameter niet is opgegeven of onjuist is, retourneert de extensie een verzoek om verduidelijking en stelt Siri de gebruiker een aanvullende vraag. confirm — bevestiging van het voornemen. De extensie controleert of zij de intent in de huidige context kan uitvoeren. handle — de daadwerkelijke uitvoering van de operatie en terugkeer van het resultaat.

De verdeling in drie fasen is cruciaal voor de spraak UX: als een parameter niet wordt herkend, voert Siri de actie niet uit, maar vraagt opnieuw. Als de gebruiker bijvoorbeeld zegt „Stuur een bericht naar Alexei”, maar er zijn drie Alexei in de contacten — retourneert de extensie resolve met een verzoek om verduidelijking en vraagt Siri „Naar welke Alexei?”.

INIntentResponse en statussen

INIntentResponse — het object dat de extensie retourneert in completion na uitvoering van de intent. Response bevat de resultaatcode (success, failure, requiresAuthentication, inProgress) en optionele gegevens om door Siri te worden uitgesproken. De code bepaalt hoe Siri reageert: success — spraakbevestiging, failure — foutmelding, inProgress — indicatie van een langdurige operatie.

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

Aangepaste intents maken

Sinds iOS 14 hebben ontwikkelaars de mogelijkheid gekregen om eigen intents te definiëren buiten de standaard SiriKit-domeinen. Aangepaste intents worden beschreven in het bestand Intents.intentdefinition — dit is een visuele editor in Xcode waarin nieuwe commandotypen met parameters en antwoorden worden gemaakt.

Structuur van een aangepaste intent

Elke aangepaste intent bestaat uit INIntent (definitie van het verzoek) en INIntentResponse (definitie van het antwoord). INIntent bevat parameters met een gegevenstype — String, Integer, CurrencyAmount, gevonden objecten en andere. INIntentResponse bevat eigenschappen voor het retourneren van het resultaat en een array van antwoordcodes. Xcode genereert automatisch Swift-klassen op basis van deze definitie.

Apple raadt aan dat een aangepaste intent niet meer dan 5 parameters bevat — een overmatig aantal verslechtert de spraakherkenning en bemoeilijkt de gebruikerservaring. Voor elke parameter is het wenselijk om voorbeeldzinnen te verstrekken in Assistant Dialog, zodat Siri deze correct leert herkennen.

Voorbeeldzinnen voor Siri

In Intents.intentdefinition kunnen voor elke intent voorbeeldzinnen worden opgegeven — zinnen die de gebruiker tegen Siri zal zeggen om de intent te activeren. Voorbeelden: „Bestel koffie in MijnApp”, „Vraag MijnApp om een pizzarecept te vinden”. Siri gebruikt deze zinnen om herkenning te leren en biedt ze de gebruiker aan bij het instellen van Shortcuts.

objective-c
// Intents.intentdefinition (visuele 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"

Spraakinteractie en INUIHostedViewProviding

INUIHostedViewProviding — het protocol dat Intents Extension in staat stelt een aangepaste interface weer te geven binnen Siri vóór het uitvoeren van de opdracht. Bij het bestellen van een taxi kan de extensie bijvoorbeeld een kaart met de route en kosten tonen, en de gebruiker bevestigt de actie door aanraking.

Configuratie van de interface

Het protocol definieert de methode configure(with:for:completion:), waarbij de extensie de intent ontvangt en een UIViewController retourneert die in Siri wordt ingebed. De grootte van de controller is beperkt — maximale hoogte 200 punten. Het gebruik van compacte kaarten met kerninformatie wordt aanbevolen: bedrag, tijd, adres.

De aangepaste interface is optioneel — als de extensie INUIHostedViewProviding niet implementeert, toont Siri een standaardkaart met het intenttype en de app. Voor de meeste intents is de standaard UI voldoende en Apple raadt aan alleen een aangepaste interface toe te voegen wanneer deze echt het begrip verbetert — bijvoorbeeld voor het tonen van een route of het bevestigen van een betaling.

Beveiliging en bevestiging

Voor intents die verband houden met financiën of persoonlijke gegevens is authenticatie vereist. INIntentResponse ondersteunt de code requiresAuthentication, die Siri dwingt om Face ID of Touch ID aan te vragen vóór uitvoering. Na authenticatie ontvangt de extensie bevestiging via een aparte handle-aanroep, waarin de authenticatiestatus wordt gecontroleerd.

Apple benadrukt in het bijzonder: Intents Extension mag geen eigen wachtwoord of biometrie vragen — er wordt systeemauthenticatie gebruikt. Het opslaan van toegangstokens in Keychain met gedeelde toegang tussen de app en de extensie is de standaardpraktijk voor langdurige sessies.

swift
class IntentViewController: UIViewController {

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

Veelgestelde vragen

Kan ik Intents Extension zonder Siri gebruiken?

Ja, de extensie kan intents verwerken uit de Shortcuts-app zonder spraakinvoer. De gebruiker maakt een snelkoppeling uit de voorgestelde acties en de extensie voert deze uit zonder tussenkomst van Siri.

Welke iOS-versies ondersteunen aangepaste intents?

Aangepaste intents zijn beschikbaar vanaf iOS 14 en nieuwer. Voor iOS 10–13 zijn alleen de standaard SiriKit-domeinen beschikbaar. Aangepaste intents vereisen Intents.intentdefinition en het genereren van Swift-klassen.

Hoeveel tijd is er voor het verwerken van een intent?

Siri wacht ongeveer 15 seconden op een antwoord van de extensie. Bij overschrijding van de limiet meldt Siri aan de gebruiker dat de actie niet kon worden uitgevoerd. Gebruik voor langdurige bewerkingen de antwoordcode inProgress.

Hoe geef ik een autorisatietoken door aan Intents Extension?

Gebruik Keychain met gedeelde toegang via een access group tussen de hoofdapp en de extensie. App Group shared UserDefaults is een alternatief, maar staat achter bij Keychain wat betreft beveiliging.

Wat is het verschil tussen Intents Extension en Intents UI Extension?

Intents Extension verwerkt de logica — resolve, confirm, handle. Intents UI Extension biedt een aangepaste interface voor weergave binnen Siri via INUIHostedViewProviding. Beide kunnen samenwerken.

Samenvatting

  • Intents Extension verwerkt Siri-spraakopdrachten en Shortcuts-snelkoppelingen via het INIntentHandler-protocol
  • SiriKit biedt meer dan 20 standaarddomeinen en ondersteunt aangepaste intents vanaf iOS 14
  • De levenscyclus van een intent omvat drie fasen: resolve (verduidelijking), confirm (bevestiging) en handle (uitvoering)
  • Aangepaste intents worden gemaakt in Intents.intentdefinition met parameters, antwoorden en voorbeeldzinnen voor Siri
  • INUIHostedViewProviding maakt het mogelijk een aangepaste bevestigingsinterface weer te geven binnen Siri vóór uitvoering
  • Voor financiële en privéacties wordt systeemauthenticatie gebruikt via Face ID of Touch ID

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook