Intents Extension: nyckelbegrepp och Siri Intents-integration i iOS

Författare: IT Sectr Publicerad: 2026-06-16 Lästid: 9 min

Intents Extension är en iOS-förlängning som gör det möjligt för tredjepartsappar att bearbeta Siris röstkommandon och interagera med systemtjänster via SiriKit. Appen definierar egna intents i Intents.intentdefinition, implementerar hanterare baserade på INIntentHandler och registrerar dem för igenkänning av röstfraser. Enligt Apple Developer Documentation (2025) stöder SiriKit över 20 intentdomäner — från meddelanden och betalningar till träning och bokningar, och från iOS 14 har stöd för anpassade intents via IntentsExtension lagts till.

Huvudpunkter

  • Intents Extension bearbetar Siris röstkommandon och systemintents för appens räkning i bakgrunden
  • Intents definieras via filen Intents.intentdefinition med parametrar och svar i Xcodes visuella redigerare
  • Huvudprotokollet — INIntentHandler, som implementerar metoden handle(intent:completion:) för att bearbeta förfrågningar
  • Anpassade intents (iOS 14+) gör det möjligt för appen att skapa egna kommandotyper utan att vara bundna till standarddomänerna i SiriKit
  • Förlängningen stöder INUIHostedViewProviding för att visa ett anpassat gränssnitt inuti Siri före kommandots utförande

Vad är Intents Extension i iOS

Intents Extension är en appförlängning som gör det möjligt för Siri, Shortcuts och andra systemtjänster att anropa appens funktionalitet via det standardiserade INIntentHandler-protokollet. När användaren säger „Hej Siri, skicka ett meddelande i Messenger X”, aktiverar Siri motsvarande förlängning, skickar förfrågans parametrar och tar emot resultatet för att uttala det.

Till skillnad från andra typer av förlängningar fungerar Intents Extension i bakgrunden utan synligt gränssnitt — Siri själv visar svaret med röst eller en textkarta. Förlängningen kan eventuellt tillhandahålla ett anpassat gränssnitt via INUIHostedViewProviding, som visas inuti Siri före kommandots utförande för bekräftelse.

Förlängningen har inte åtkomst till enhetens skärm och kan inte initiera åtgärder självständigt — endast som svar på en förfrågan från Siri eller Shortcuts. Detta säkerställer säkerheten: användaren har alltid kontroll över vilka åtgärder appen utför via röstkommandon.

SiriKit och intentdomäner

SiriKit är Apples ramverk för integration med Siri, introducerat i iOS 10. Det definierar domäner — kategorier av åtgärder som Siri kan bearbeta: meddelanden, telefonsamtal, betalningar, listor, påminnelser, foton, träning, bokningar och andra. Varje domän har en fast uppsättning intents och svar.

Standarddomäner

INSendMessageIntent — skicka meddelanden. INStartWorkoutIntent — starta träning. INSearchForPhotosIntent — söka foton. INRequestRideIntent — beställa taxi. Varje domän definierar obligatoriska och valfria parametrar som Siri extraherar från röstförfrågan. Enligt Apple krävs ingen intentdefinition-fil för standarddomäner — det räcker att implementera motsvarande handler.

För appar som inte passar in i standarddomänerna har möjligheten till anpassade intents funnits sedan iOS 14. Appen definierar egna kommandotyper och deras parametrar via Intents.intentdefinition, och Siri lär sig att känna igen motsvarande fraser baserat på exempel som tillhandahålls av utvecklaren.

Konfiguration i Info.plist

Intents Extension registreras via nyckeln IntentsSupported i Info.plist, där alla intentklasser som förlängningen bearbetar listas. Siri använder denna lista för att välja lämplig förlängning vid igenkänning av ett röstkommando. Om flera förlängningar stöder samma intent erbjuder Siri användaren ett val.

swift
class MessageIntentHandler: NSObject,
    INSendMessageIntentHandling {

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

INIntentHandler: bearbetning av förfrågningar

INIntentHandler — protokollet som definierar metoder för att bearbeta varje steg i intentets arbete: upplösning av parametrar, bekräftelse och utförande. Förlängningen implementerar dessa metoder för varje typ av intent som den stöder.

Tre bearbetningssteg

resolve — kontroll och förtydligande av intentparametrar. Siri anropar denna metod för varje parameter. Om en parameter inte har angetts eller är felaktig returnerar förlängningen en begäran om förtydligande, och Siri ställer en ytterligare fråga till användaren. confirm — bekräftelse av avsikten. Förlängningen kontrollerar om den kan utföra intentet i det aktuella sammanhanget. handle — själva utförandet av operationen och returnering av resultatet.

Uppdelningen i tre steg är avgörande för röst-UX: om en parameter inte känns igen utför Siri inte åtgärden utan frågar igen. Till exempel, om användaren sa „Skicka ett meddelande till Alexei”, men det finns tre Alexei i kontakterna — förlängningen returnerar resolve med en begäran om förtydligande, och Siri frågar „Till vilken Alexei?”.

INIntentResponse och statusar

INIntentResponse — objektet som förlängningen returnerar i completion efter utförandet av intentet. Response innehåller resultatkoden (success, failure, requiresAuthentication, inProgress) och valfria data för Siri att uttala. Koden avgör hur Siri reagerar: success — röstbekräftelse, failure — felmeddelande, inProgress — indikation på en långvarig operation.

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

Skapa anpassade intents

Från och med iOS 14 har utvecklare fått möjlighet att definiera egna intents utanför SiriKits standarddomäner. Anpassade intents beskrivs i filen Intents.intentdefinition — detta är en visuell redigerare i Xcode där nya kommandotyper med parametrar och svar skapas.

Struktur för ett anpassat intent

Varje anpassat intent består av INIntent (definition av förfrågan) och INIntentResponse (definition av svar). INIntent innehåller parametrar med datatyp — String, Integer, CurrencyAmount, hittade objekt och andra. INIntentResponse innehåller egenskaper för att returnera resultatet och en array med svarskoder. Xcode genererar automatiskt Swift-klasser baserat på denna definition.

Apple rekommenderar att ett anpassat intent inte har fler än 5 parametrar — ett överdrivet antal försämrar röstigenkänningen och komplicerar användarupplevelsen. För varje parameter är det lämpligt att tillhandahålla exempelfraser i Assistant Dialog så att Siri lär sig att känna igen dem korrekt.

Exempelfraser för Siri

I Intents.intentdefinition kan man för varje intent ange exempelmeningar — fraser som användaren kommer att säga till Siri för att aktivera intentet. Exempel: „Beställ kaffe i MinApp”, „Be MinApp att hitta ett pizzarecept”. Siri använder dessa fraser för att lära sig igenkänning och erbjuder dem till användaren vid konfigurering av Shortcuts.

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

Röstinteraktion och INUIHostedViewProviding

INUIHostedViewProviding — protokollet som gör det möjligt för Intents Extension att visa ett anpassat gränssnitt inuti Siri före kommandots utförande. Till exempel vid beställning av taxi kan förlängningen visa en karta med rutten och kostnaden, och användaren bekräftar åtgärden genom att trycka.

Konfiguration av gränssnitt

Protokollet definierar metoden configure(with:for:completion:), där förlängningen tar emot intentet och returnerar en UIViewController som bäddas in i Siri. Styrenhetens storlek är begränsad — maximal höjd 200 punkter. Användning av kompakta kort med nyckelinformation rekommenderas: belopp, tid, adress.

Det anpassade gränssnittet är valfritt — om förlängningen inte implementerar INUIHostedViewProviding visar Siri ett standardkort med intenttypen och appen. För de flesta intents räcker standardgränssnittet, och Apple rekommenderar att lägga till anpassat gränssnitt endast när det verkligen förbättrar förståelsen — till exempel för att visa en rutt eller bekräfta en betalning.

Säkerhet och bekräftelse

För intents relaterade till ekonomi eller personuppgifter krävs autentisering. INIntentResponse stöder koden requiresAuthentication, som tvingar Siri att begära Face ID eller Touch ID före utförande. Efter autentisering får förlängningen bekräftelse via ett separat handle-anrop, där autentiseringsstatusen kontrolleras.

Apple betonar särskilt: Intents Extension ska inte begära eget lösenord eller biometri — systemautentisering används. Lagring av åtkomsttoken i Keychain med delad åtkomst mellan appen och förlängningen är standardpraxis för långlivade sessioner.

swift
class IntentViewController: UIViewController {

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

Vanliga frågor

Kan jag använda Intents Extension utan Siri?

Ja, förlängningen kan bearbeta intents från Shortcuts-appen utan röstinmatning. Användaren skapar en genväg från de föreslagna åtgärderna, och förlängningen utför den utan Siris medverkan.

Vilka iOS-versioner stöder anpassade intents?

Anpassade intents är tillgängliga från iOS 14 och nyare. För iOS 10–13 är endast standarddomäner i SiriKit tillgängliga. Anpassade intents kräver Intents.intentdefinition och generering av Swift-klasser.

Hur lång tid ges för att bearbeta ett intent?

Siri väntar på svar från förlängningen i cirka 15 sekunder. Vid överskridande av gränsen meddelar Siri användaren att åtgärden misslyckades. För långvariga operationer, använd svarskoden inProgress.

Hur överför jag en auktoriseringstoken till Intents Extension?

Använd Keychain med delad åtkomst via en access group mellan huvudappen och förlängningen. App Group shared UserDefaults är ett alternativ men är sämre än Keychain när det gäller säkerhet.

Vad är skillnaden mellan Intents Extension och Intents UI Extension?

Intents Extension bearbetar logiken — resolve, confirm, handle. Intents UI Extension tillhandahåller ett anpassat gränssnitt för visning inuti Siri via INUIHostedViewProviding. Båda kan fungera tillsammans.

Sammanfattning

  • Intents Extension bearbetar Siris röstkommandon och Shortcuts-genvägar via INIntentHandler-protokollet
  • SiriKit erbjuder över 20 standarddomäner och stöder anpassade intents från iOS 14
  • Intentets livscykel omfattar tre steg: resolve (förtydligande), confirm (bekräftelse) och handle (utförande)
  • Anpassade intents skapas i Intents.intentdefinition med parametrar, svar och exempelfraser för Siri
  • INUIHostedViewProviding gör det möjligt att visa ett anpassat bekräftelsegränssnitt inuti Siri före utförande
  • För finansiella och privata åtgärder används systemautentisering via Face ID eller Touch ID

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också