<!--
{
  "availability" : [
    "iOS: 10.0.0 -",
    "iPadOS: 10.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 11.0.0 -",
    "tvOS: 14.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 3.2.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "SiriKit",
  "identifier" : "/documentation/Intents/INIntentHandlerProviding",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "Intents"
    ],
    "preciseIdentifier" : "c:objc(pl)INIntentHandlerProviding"
  },
  "title" : "INIntentHandlerProviding"
}
-->

# INIntentHandlerProviding

The interface for dispatching intents to the custom objects that handle those intents.

```
protocol INIntentHandlerProviding : NSObjectProtocol
```

## Overview

The `INIntentHandlerProviding` protocol defines the method for routing SiriKit requests to the appropriate objects of your Intents extension. The method in this protocol acts as a dispatcher, returning an object capable of resolving, confirming, and handling a specific intent object. This protocol is adopted by the [`INExtension`](/documentation/Intents/INExtension) class and you must provide a custom implementation.

When you add an Intents extension to your project, Xcode automatically creates a default [`INExtension`](/documentation/Intents/INExtension) subclass that adopts this protocol. Modify the [`handler(for:)`](/documentation/Intents/INIntentHandlerProviding/handler(for:)) method in that subclass and use it to create your handler objects. You can use the same class to handle multiple intents or you can use different classes for each intent.

## Topics

### Providing Handlers for Intents

[`handler(for:)`](/documentation/Intents/INIntentHandlerProviding/handler(for:))

Returns the object capable of handling the specified intent in an extension.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)