---
title: DDDiscoveryExtension
framework: DeviceDiscoveryExtension
role: symbol
role_heading: Protocol
platforms: [iOS 16.0+, iPadOS 16.0+, macOS 13.0+]
path: devicediscoveryextension/dddiscoveryextension
---

# DDDiscoveryExtension

A specification that enables the framework to start and stop the extension’s discovery process.

## Declaration

```swift
protocol DDDiscoveryExtension : AppExtension
```

## Overview

Overview Your extension adopts this protocol as the primary entry and exit points for device discovery. The system calls your extension’s startDiscovery(session:) when AVRoutePickerView displays so your extension can include a specific third-party device in the picker. When the picker UI dismisses or the user selects a device, the system calls your extension’s stopDiscovery(session:) implementation to instruct it to perform any cleanup.

## Topics

### Controlling discovery

- [startDiscovery(session:)](devicediscoveryextension/dddiscoveryextension/startdiscovery(session:).md)
- [stopDiscovery(session:)](devicediscoveryextension/dddiscoveryextension/stopdiscovery(session:).md)

### Observing state changes

- [didReceiveEvent(_:)](devicediscoveryextension/dddiscoveryextension/didreceiveevent(_:).md)

## Relationships

### Inherits From

- [AppExtension](extensionfoundation/appextension.md)

## See Also

### Extension

- [DDDiscoverySession](devicediscoveryextension/dddiscoverysession.md)
- [DDDiscoveryExtensionConfigurationProtocol](devicediscoveryextension/dddiscoveryextensionconfigurationprotocol.md)
