<!--
{
  "availability" : [
    "iOS: 9.3.0 -",
    "iPadOS: 9.3.0 -",
    "macCatalyst: 13.1.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 2.2.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "WatchConnectivity",
  "identifier" : "/documentation/WatchConnectivity/WCSessionDelegate/session(_:activationDidCompleteWith:error:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "Watch Connectivity"
    ],
    "preciseIdentifier" : "c:objc(pl)WCSessionDelegate(im)session:activationDidCompleteWithState:error:"
  },
  "title" : "session(_:activationDidCompleteWith:error:)"
}
-->

# session(_:activationDidCompleteWith:error:)

Tells the delegate that the session has finished activating.

```
func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: (any Error)?)
```

## Parameters

`session`

The session object whose activation completed.

`activationState`

The state of the session. Sessions normally move to the [`WCSessionActivationState.activated`](/documentation/WatchConnectivity/WCSessionActivationState/activated) state upon success or the [`WCSessionActivationState.notActivated`](/documentation/WatchConnectivity/WCSessionActivationState/notActivated) state when there is an error. On iOS, the session may also move to the [`WCSessionActivationState.inactive`](/documentation/WatchConnectivity/WCSessionActivationState/inactive) state if there is data waiting to be delivered from a previous session.

`error`

An error object indicating that a problem occurred or `nil` if activation completed successfully. When the `activationState` parameter contains the value [`WCSessionActivationState.notActivated`](/documentation/WatchConnectivity/WCSessionActivationState/notActivated), this parameter contains the error object describing the reason for the failure.

## Discussion

You must implement this method to support asynchronous activation and quick watch switching. Your implementation should check the value of the `activationState` parameter to see if communication with the counterpart app is possible. When the state is [`WCSessionActivationState.activated`](/documentation/WatchConnectivity/WCSessionActivationState/activated), you may communicate normally with the other app.

---

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)