<!--
{
  "availability" : [
    "iOS: 16.0.0 -",
    "iPadOS: 16.0.0 -",
    "macCatalyst: -",
    "watchOS: 9.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "NearbyInteraction",
  "identifier" : "/documentation/NearbyInteraction/NIAlgorithmConvergenceStatus-2fnve/Reason",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "Nearby Interaction",
      "NearbyInteraction"
    ],
    "preciseIdentifier" : "s:17NearbyInteraction28NIAlgorithmConvergenceStatusO6ReasonV"
  },
  "title" : "NIAlgorithmConvergenceStatus.Reason"
}
-->

# NIAlgorithmConvergenceStatus.Reason

The possible reasons for the Camera Assistance status.

```
struct Reason
```

## Overview

When the app enables Camera Assistance by setting [`isCameraAssistanceEnabled`](/documentation/NearbyInteraction/NINearbyPeerConfiguration/isCameraAssistanceEnabled) to `true`, the framework provides the app with one or more reasons when the convergence status is [`NIAlgorithmConvergenceStatus.notConverged(_:)`](/documentation/NearbyInteraction/NIAlgorithmConvergenceStatus-2fnve/notConverged(_:)). The reasons detail specific user actions the framework requires to improve the results of Camera Assistance.

At runtime, the app needs to check the status in the `convergence` object provided by [`session(_:didUpdateAlgorithmConvergence:for:)`](/documentation/NearbyInteraction/NISessionDelegate/session(_:didUpdateAlgorithmConvergence:for:)). If the status indicates that Camera Assistance requires user intervention, the app needs to coach the user, such as by presenting text that explains what to do for each circumstance that [`reasons`](/documentation/NearbyInteraction/NIAlgorithmConvergence/reasons) can describe.

> Note: The Objective-C version of this class is ``doc://com.apple.nearbyinteraction/documentation/NearbyInteraction/NIAlgorithmConvergenceStatusReason``.

## Topics

### Creating a convergence status

### Comparing convergence status reasons

[`var localizedDescription: String?`](/documentation/NearbyInteraction/NIAlgorithmConvergenceStatus-2fnve/Reason/localizedDescription)

A string that contains a description of the error.

### Interpreting the convergence status reason

[`static let insufficientMovement: NIAlgorithmConvergenceStatus.Reason`](/documentation/NearbyInteraction/NIAlgorithmConvergenceStatus-2fnve/Reason/insufficientMovement)

Indicates that the device needs to move from its current position in the physical environment.

[`static let insufficientHorizontalSweep: NIAlgorithmConvergenceStatus.Reason`](/documentation/NearbyInteraction/NIAlgorithmConvergenceStatus-2fnve/Reason/insufficientHorizontalSweep)

Indicates that the device needs more horizontal motion.

[`static let insufficientVerticalSweep: NIAlgorithmConvergenceStatus.Reason`](/documentation/NearbyInteraction/NIAlgorithmConvergenceStatus-2fnve/Reason/insufficientVerticalSweep)

Indicates that the device needs more vertical motion.

[`static let insufficientLighting: NIAlgorithmConvergenceStatus.Reason`](/documentation/NearbyInteraction/NIAlgorithmConvergenceStatus-2fnve/Reason/insufficientLighting)

Indicates that the camera needs to view the physical environment under better lighting conditions.

[`static let insufficientSignalStrength: NIAlgorithmConvergenceStatus.Reason`](/documentation/NearbyInteraction/NIAlgorithmConvergenceStatus-2fnve/Reason/insufficientSignalStrength)

Indicates that the users might be too far apart.

## Relationships

### Conforms To

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

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

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

---

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)