<!--
{
  "availability" : [
    "iOS: 3.0.0 -",
    "iPadOS: 3.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.13.0 -",
    "tvOS: 10.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ExternalAccessory",
  "identifier" : "/documentation/ExternalAccessory/EAAccessory",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "External Accessory"
    ],
    "preciseIdentifier" : "c:objc(cs)EAAccessory"
  },
  "title" : "EAAccessory"
}
-->

# EAAccessory

An object that contains information about a single, connected hardware accessory.

```
class EAAccessory
```

## Overview

An [`EAAccessory`](/documentation/ExternalAccessory/EAAccessory) object gives your app information about a single connected hardware accessory. You can use the information in this class to determine whether your app is able to open a session to a given accessory. After you have an open session, you can also associate a custom delegate with the accessory object to be notified to changes in the accessory state. Your delegate must adopt the [`EAAccessoryDelegate`](/documentation/ExternalAccessory/EAAccessoryDelegate) protocol.

You use an accessory object to create an [`EASession`](/documentation/ExternalAccessory/EASession) object, which itself provides the communications channel to and from the accessory hardware. The accessory object provides information about the communications protocols the accessory supports, along with information about current hardware and firmware revisions.

When deciding whether to connect to an accessory, you should always first check the accessory’s declared protocols in the [`protocolStrings`](/documentation/ExternalAccessory/EAAccessory/protocolStrings) array. This list indicates the types of data the accessory is capable of processing at that moment, which may not be the full list of protocols for which the accessory is designed. For example, an accessory that is connected but not yet authenticated will report no supported protocols until authentication is successful. Don’t connect to the accessory unless and until the list includes the protocol you intend to use.

Accessories can be physically connected to the device through the Lightning connector (or through the 30-pin connector on older devices) or wirelessly using Bluetooth.

## Topics

### Responding to Disconnection Events

[`delegate`](/documentation/ExternalAccessory/EAAccessory/delegate)

The object that acts as the delegate of the accessory.

[`EAAccessoryDelegate`](/documentation/ExternalAccessory/EAAccessoryDelegate)

A protocol that defines an optional method for receiving notifications when the associated accessory object is disconnected.

### Getting Connection Information

[`connected`](/documentation/ExternalAccessory/EAAccessory/isConnected)

A Boolean value indicating whether the accessory is currently connected to the iOS-based device.

[`connectionID`](/documentation/ExternalAccessory/EAAccessory/connectionID)

The accessory’s unique ID for connecting to the iOS-based device.

[Null Connection ID](/documentation/ExternalAccessory/null-connection-id)

The ID for an unconnected accessory.

### Getting the Manufacturer-Supplied Attributes

[`name`](/documentation/ExternalAccessory/EAAccessory/name)

The display name of the accessory.

[`manufacturer`](/documentation/ExternalAccessory/EAAccessory/manufacturer)

The name of the accessory’s manufacturer.

[`modelNumber`](/documentation/ExternalAccessory/EAAccessory/modelNumber)

The model information for the accessory.

[`serialNumber`](/documentation/ExternalAccessory/EAAccessory/serialNumber)

The serial number of the accessory.

[`firmwareRevision`](/documentation/ExternalAccessory/EAAccessory/firmwareRevision)

The current firmware version for the accessory.

[`hardwareRevision`](/documentation/ExternalAccessory/EAAccessory/hardwareRevision)

The hardware version of the accessory.

[`protocolStrings`](/documentation/ExternalAccessory/EAAccessory/protocolStrings)

The communication protocols supported by the accessory.

[`dockType`](/documentation/ExternalAccessory/EAAccessory/dockType)

## Relationships

### Conforms To

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

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

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

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

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

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

### 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)