<!--
{
  "availability" : [
    "iOS: 27.3.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AccessoryTransportExtension",
  "identifier" : "/documentation/AccessoryTransportExtension/AccessoryFeatureRuntimeSession/activate()",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "Accessory Transport Extension"
    ],
    "preciseIdentifier" : "s:27AccessoryTransportExtension0A21FeatureRuntimeSessionP8activateyyYaKF"
  },
  "title" : "activate()"
}
-->

# activate()

Registers the session and requests that the system start it.

```
func activate() async throws
```

## Discussion

Returning from this method doesn’t mean the session started. The system calls [`sessionStarted(_:)`](/documentation/AccessoryTransportExtension/AccessoryFeatureRuntimeSessionHandler/sessionStarted(_:)) after registering the session and after your app enrolls the feature. For more information about feature enrollment, see [Accessory features](/documentation/AccessoryTransportExtension/accessory-features).

This method throws [`AccessoryTransportSession.Error.unavailable`](/documentation/AccessoryTransportExtension/AccessoryTransportSession/Error/unavailable) if the feature isn’t available on the device, and the system throws an error if a live session for the same feature already exists.

This method doesn’t throw when the feature isn’t enrolled for the accessory. Check the status with `AccessoryWorker/authorizationStatus(for:)` before you call this method.

---

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)