<!--
{
  "availability" : [
    "iOS: 16.0.0 -",
    "iPadOS: 16.0.0 -",
    "macCatalyst: 16.0.0 -",
    "macOS: -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "DeviceDiscoveryExtension",
  "identifier" : "/documentation/DeviceDiscoveryExtension/DDDevice",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "DeviceDiscoveryExtension"
    ],
    "preciseIdentifier" : "c:objc(cs)DDDevice"
  },
  "title" : "DDDevice"
}
-->

# DDDevice

An object that describes a discovered device of interest.

```
class DDDevice
```

## Overview

The extension creates an instance of this class for a discovered device of interest and passes it to the system for display in the device picker UI (<doc://com.apple.documentation/documentation/AVKit/AVRoutePickerView>).

The extension discovers devices through either Core Bluetooth or the local network (that is, using <doc://com.apple.documentation/documentation/Foundation/bonjour>).

For device discovery extensions of third-party media receivers, an instance of this class corresponds to the media receiver of interest.

The extension reports the status of discovered devices to the system using the [`report(_:)`](/documentation/DeviceDiscoveryExtension/DDDiscoverySession/report(_:)) function, and it receives status updates about the device from the system by implementing [`didReceiveEvent(_:)`](/documentation/DeviceDiscoveryExtension/DDDiscoveryExtension/didReceiveEvent(_:)).

## Topics

### Initializing a device

[`-  initWithDisplayName:category:protocolType:identifier:`](/documentation/DeviceDiscoveryExtension/DDDevice/init(displayName:category:protocolType:identifier:))

Creates an object that describes a discovered device.

### Identifying the device

[`displayName`](/documentation/DeviceDiscoveryExtension/DDDevice/displayName)

A name for the device to display to the user.

[`identifier`](/documentation/DeviceDiscoveryExtension/DDDevice/identifier)

A unique identifier for the device.

[`category`](/documentation/DeviceDiscoveryExtension/DDDevice/category-swift.property)

An option that determies the icon that the picker UI displays for the device.

[`Category`](/documentation/DeviceDiscoveryExtension/DDDevice/Category-swift.enum)

An option that determines the icon for the device in the picker UI.

### Indicating the protocol

[`protocol`](/documentation/DeviceDiscoveryExtension/DDDevice/protocol-swift.property)

The manner in which the system applies your app’s device discovery extension.

[`Protocol`](/documentation/DeviceDiscoveryExtension/DDDevice/Protocol-swift.enum)

An identifier for the manner in which an app interacts with a device.

[`protocolType`](/documentation/DeviceDiscoveryExtension/DDDevice/protocolType)

A custom universal type that describes the device’s manner of communication with the extension.

[`bluetoothIdentifier`](/documentation/DeviceDiscoveryExtension/DDDevice/bluetoothIdentifier)

An identifier to communicate with the device through Bluetooth wireless technology.

[`networkEndpoint`](/documentation/DeviceDiscoveryExtension/DDDevice/networkEndpoint-3lah1)

An object that describes a local-network device.

[`networkEndpoint`](/documentation/DeviceDiscoveryExtension/DDDevice/networkEndpoint-7excg)

An object that describes a local-network device.

### Setting the device state

[`state`](/documentation/DeviceDiscoveryExtension/DDDevice/state)

A state that represents the level of user interaction with the device.

[`txtRecord`](/documentation/DeviceDiscoveryExtension/DDDevice/txtRecord)

A dictionary of metadata for the device that the extension communicates with over the local network.

[`txtRecordData`](/documentation/DeviceDiscoveryExtension/DDDevice/txtRecordData)

A dictionary of metadata for the device that the extension communicates with over the local network.

[`url`](/documentation/DeviceDiscoveryExtension/DDDevice/url)

A resource locator for the simple service discovery protocol.

[`supportsGrouping`](/documentation/DeviceDiscoveryExtension/DDDevice/supportsGrouping)

A Boolean value that indicates whether to group the device with others in the AirPlay UI.

### Communicating device content and playback status

[`mediaContentTitle`](/documentation/DeviceDiscoveryExtension/DDDevice/mediaContentTitle)

A title for the current media that the device plays.

[`mediaContentSubtitle`](/documentation/DeviceDiscoveryExtension/DDDevice/mediaContentSubtitle)

A subtitle for the current media that the device plays.

[`mediaPlaybackState`](/documentation/DeviceDiscoveryExtension/DDDevice/mediaPlaybackState-swift.property)

A playback status for the device’s current media.

[`MediaPlaybackState`](/documentation/DeviceDiscoveryExtension/DDDevice/MediaPlaybackState-swift.enum)

States that indicate the status of a device’s media playback.

## Relationships

### Conforms To

[`Equatable`](/documentation/Swift/Equatable)

[`CVarArg`](/documentation/Swift/CVarArg)

[`Hashable`](/documentation/Swift/Hashable)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

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

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

---

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)