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

# INPlayMediaIntentHandling

The interface an object implements to confirm and handle play media intents.

```
protocol INPlayMediaIntentHandling : NSObjectProtocol
```

## Overview

Use the methods of the [`INPlayMediaIntentHandling`](/documentation/Intents/INPlayMediaIntentHandling) protocol to confirm and handle requests for media playback in your app. Adopt this protocol in an object of your Intents app extension capable of verifying that the media is playable in your app. When handling the playback request, send the request to your app and let your app perform the playback, rather than playing the media in the extension. The lifespan of extensions is too short for media playback.

Siri delivers an [`INPlayMediaIntent`](/documentation/Intents/INPlayMediaIntent) object to your handler when the user invokes the media intent shortcut. This intent object contains metadata that identifies the requested media content.

## Topics

### Resolving the Intent Parameters

[`func resolveMediaItems(for: INPlayMediaIntent, with: ([INPlayMediaMediaItemResolutionResult]) -> Void)`](/documentation/Intents/INPlayMediaIntentHandling/resolveMediaItems(for:with:))

Resolves the media items to play.

[`func resolvePlayShuffled(for: INPlayMediaIntent, with: (INBooleanResolutionResult) -> Void)`](/documentation/Intents/INPlayMediaIntentHandling/resolvePlayShuffled(for:with:))

Resolves whether to shuffle the played media.

[`func resolvePlaybackQueueLocation(for: INPlayMediaIntent, with: (INPlaybackQueueLocationResolutionResult) -> Void)`](/documentation/Intents/INPlayMediaIntentHandling/resolvePlaybackQueueLocation(for:with:))

Resolves the location in the playback queue where your app plays the media.

[`func resolvePlaybackRepeatMode(for: INPlayMediaIntent, with: (INPlaybackRepeatModeResolutionResult) -> Void)`](/documentation/Intents/INPlayMediaIntentHandling/resolvePlaybackRepeatMode(for:with:))

Resolves the repeat mode when playing media.

[`func resolvePlaybackSpeed(for: INPlayMediaIntent, with: (INPlayMediaPlaybackSpeedResolutionResult) -> Void)`](/documentation/Intents/INPlayMediaIntentHandling/resolvePlaybackSpeed(for:with:))

Resolves the playback speed when playing media.

[`func resolveResumePlayback(for: INPlayMediaIntent, with: (INBooleanResolutionResult) -> Void)`](/documentation/Intents/INPlayMediaIntentHandling/resolveResumePlayback(for:with:))

Resolves whether to resume playback.

### Confirming the Intent

[`func confirm(intent: INPlayMediaIntent, completion: (INPlayMediaIntentResponse) -> Void)`](/documentation/Intents/INPlayMediaIntentHandling/confirm(intent:completion:))

Confirms the details of the media playback request.

### Handling the Intent

[`func handle(intent: INPlayMediaIntent, completion: (INPlayMediaIntentResponse) -> Void)`](/documentation/Intents/INPlayMediaIntentHandling/handle(intent:completion:))

Handles the media playback request.

## Relationships

### Inherits From

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

---

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)