---
title: MediaDeviceExtension
framework: mediadevice
role: symbol
role_heading: Protocol
path: mediadevice/mediadeviceextension
---

# MediaDeviceExtension

A protocol that defines the requirements of a media device extension that discovers, activates, and plays media on a remote device.

## Declaration

```swift
@MainActor protocol MediaDeviceExtension : AppExtension
```

## Mentioned in

Creating a media device extension

## Overview

Overview The extension requires the com.apple.developer.media-device-extension entitlement. As part of this entitlement an ID for your protocol needs to be specified. This same identifier must also be declared in the extension’s Info.plist as the UTTypeIdentifier. If the identifier in the entitlement and Info.plist do not match, the extension will not be run. This ID value can be used by other apps that use the AVSystemRouting framework and which intend to make use of an extension of this type. The display name of the extension is sourced from the value of the UTTypeDescription key in the extension’s Info.plist. It may be presented in user interfaces.

## Topics

### Instance Properties

- [protocolType](mediadevice/mediadeviceextension/protocoltype.md)
- [supportsSimultaneousSessions](mediadevice/mediadeviceextension/supportssimultaneoussessions.md)

### Instance Methods

- [activateDevice(_:session:for:)](mediadevice/mediadeviceextension/activatedevice(_:session:for:).md)
- [changeVolume(by:for:)](mediadevice/mediadeviceextension/changevolume(by:for:).md)
- [connectUsingPairingCode(_:to:session:)](mediadevice/mediadeviceextension/connectusingpairingcode(_:to:session:).md)
- [deactivateDevice(_:session:)](mediadevice/mediadeviceextension/deactivatedevice(_:session:).md)
- [isDeviceMuted(_:)](mediadevice/mediadeviceextension/isdevicemuted(_:).md)
- [muteDevice(_:)](mediadevice/mediadeviceextension/mutedevice(_:).md)
- [sendData(_:toApplication:session:)](mediadevice/mediadeviceextension/senddata(_:toapplication:session:).md)
- [setVolume(_:for:)](mediadevice/mediadeviceextension/setvolume(_:for:).md)
- [startDeviceDiscovery()](mediadevice/mediadeviceextension/startdevicediscovery().md)
- [startSession(_:identifier:url:)](mediadevice/mediadeviceextension/startsession(_:identifier:url:).md)
- [stopDeviceDiscovery()](mediadevice/mediadeviceextension/stopdevicediscovery().md)
- [stopSession(_:)](mediadevice/mediadeviceextension/stopsession(_:).md)
- [volume(for:)](mediadevice/mediadeviceextension/volume(for:).md)

## Relationships

### Inherits From

- [AppExtension](extensionfoundation/appextension.md)

### Inherited By

- [RealtimeSampleHandling](mediadevice/realtimesamplehandling.md)

## See Also

### Essentials

- [Creating a media device extension](mediadevice/creating-a-media-device-extension.md)
- [Routing media to third-party devices](avsystemrouting/routing-media-to-third-party-devices.md)
- [MediaDeviceExtensionConfiguration](mediadevice/mediadeviceextensionconfiguration.md)
