<!--
{
  "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

[`var delegate: (any EAAccessoryDelegate)?`](/documentation/ExternalAccessory/EAAccessory/delegate)

The object that acts as the delegate of the accessory.

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

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

### Getting Connection Information

[`var isConnected: Bool`](/documentation/ExternalAccessory/EAAccessory/isConnected)

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

[`var connectionID: Int`](/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

[`var name: String`](/documentation/ExternalAccessory/EAAccessory/name)

The display name of the accessory.

[`var manufacturer: String`](/documentation/ExternalAccessory/EAAccessory/manufacturer)

The name of the accessory’s manufacturer.

[`var modelNumber: String`](/documentation/ExternalAccessory/EAAccessory/modelNumber)

The model information for the accessory.

[`var serialNumber: String`](/documentation/ExternalAccessory/EAAccessory/serialNumber)

The serial number of the accessory.

[`var firmwareRevision: String`](/documentation/ExternalAccessory/EAAccessory/firmwareRevision)

The current firmware version for the accessory.

[`var hardwareRevision: String`](/documentation/ExternalAccessory/EAAccessory/hardwareRevision)

The hardware version of the accessory.

[`var protocolStrings: [String]`](/documentation/ExternalAccessory/EAAccessory/protocolStrings)

The communication protocols supported by the accessory.

[`var dockType: String`](/documentation/ExternalAccessory/EAAccessory/dockType)

## Relationships

### Conforms To

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

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

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

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

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

[`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)