<!--
{
  "availability" : [
    "iOS: 11.0.0 -",
    "iPadOS: 11.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ARKit",
  "identifier" : "/documentation/ARKit/ARSessionObserver/session(_:cameraDidChangeTrackingState:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "ARKit"
    ],
    "preciseIdentifier" : "c:objc(pl)ARSessionObserver(im)session:cameraDidChangeTrackingState:"
  },
  "title" : "session(_:cameraDidChangeTrackingState:)"
}
-->

# session(_:cameraDidChangeTrackingState:)

Informs the delegate of changes to the quality of ARKit’s device position tracking.

```
optional func session(_ session: ARSession, cameraDidChangeTrackingState camera: ARCamera)
```

## Parameters

`session`

The session providing information.

`camera`

The camera whose tracking parameters have changed. (Equivalent to [`currentFrame`](/documentation/ARKit/ARSession/currentFrame).[`camera`](/documentation/ARKit/ARFrame/camera).)

## Discussion

ARKit tracks the position and orientation of the device relative to a virtual scene through a combination of motion sensing and image processing. As such, factors that affect signal quality from the device’s motion sensing hardware or that interfere with scene detection in the camera image can result in poor estimates of the device position relative to the virtual scene.

---

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)