<!--
{
  "availability" : [
    "iOS: 12.0.0 -",
    "iPadOS: 12.0.0 -",
    "macCatalyst: 13.1.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CarPlay",
  "identifier" : "/documentation/CarPlay/CPNavigationSession",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "CarPlay"
    ],
    "preciseIdentifier" : "c:objc(cs)CPNavigationSession"
  },
  "title" : "CPNavigationSession"
}
-->

# CPNavigationSession

An object that represents an active route guidance session.

```
@MainActor class CPNavigationSession
```

## Overview

To start a navigation session, you call [`startNavigationSession(for:)`](/documentation/CarPlay/CPMapTemplate/startNavigationSession(for:)) on the map template, passing the trip the user selected. The map template’s delegate receives the selected trip via [`mapTemplate(_:startedTrip:using:)`](/documentation/CarPlay/CPMapTemplateDelegate/mapTemplate(_:startedTrip:using:)).

When calculating the initial set of maneuvers, you set [`pauseTrip(for:description:)`](/documentation/CarPlay/CPNavigationSession/pauseTrip(for:description:)) to [`CPNavigationSession.PauseReason.loading`](/documentation/CarPlay/CPNavigationSession/PauseReason/loading) so that CarPlay displays the correct state to the user.

During turn-by-turn guidance, you create [`CPManeuver`](/documentation/CarPlay/CPManeuver) objects that contain information about upcoming turns, and then update [`upcomingManeuvers`](/documentation/CarPlay/CPNavigationSession/upcomingManeuvers). Maintain at least one maneuver in the array at all times. You should call [`updateEstimates(_:for:)`](/documentation/CarPlay/CPNavigationSession/updateEstimates(_:for:)) regularly to update the remaining time and distance for each maneuver.

When CarPlay pauses, finishes, or cancels route guidance, you must call the corresponding method on the active navigation session.

## Topics

### Getting the Trip

[`trip`](/documentation/CarPlay/CPNavigationSession/trip)

The trip associated with the navigation session.

[`CPTrip`](/documentation/CarPlay/CPTrip)

An object that represents a journey between an origin and a destination.

### Managing Trip Navigation

[`cancelTrip()`](/documentation/CarPlay/CPNavigationSession/cancelTrip())

Tells the navigation session to cancel the trip.

[`finishTrip()`](/documentation/CarPlay/CPNavigationSession/finishTrip())

Tells the navigation session to finish the trip.

[`pauseTrip(for:description:)`](/documentation/CarPlay/CPNavigationSession/pauseTrip(for:description:))

Tells the navigation session to pause the trip for the specified reason.

[`pauseTrip(for:description:turnCardColor:)`](/documentation/CarPlay/CPNavigationSession/pauseTrip(for:description:turnCardColor:))

[`CPNavigationSession.PauseReason`](/documentation/CarPlay/CPNavigationSession/PauseReason)

A set of reasons for pausing a trip.

[`resumeTrip(updatedRouteInformation:)`](/documentation/CarPlay/CPNavigationSession/resumeTrip(updatedRouteInformation:))

Resumes the current trip with updated route information.

### Managing Upcoming Maneuvers

[`upcomingManeuvers`](/documentation/CarPlay/CPNavigationSession/upcomingManeuvers)

The next set of maneuvers the user should perform while following the current route.

[`maneuverState`](/documentation/CarPlay/CPNavigationSession/maneuverState)

The current maneuver state.

[`currentRoadNameVariants`](/documentation/CarPlay/CPNavigationSession/currentRoadNameVariants)

An array of strings that describe variants of the current road name.

[`currentLaneGuidance`](/documentation/CarPlay/CPNavigationSession/currentLaneGuidance)

The current lane guidance to use for navigation metadata.

[`add(_:)`](/documentation/CarPlay/CPNavigationSession/add(_:)-17l62)

Adds one or more maneuvers, in chronological order, to the navigation session.

[`add(_:)`](/documentation/CarPlay/CPNavigationSession/add(_:)-93qpu)

Adds one or more lane guidance instances to the navigation session.

[`CPManeuver`](/documentation/CarPlay/CPManeuver)

An object that describes a single navigation instruction.

### Updating Travel Estimates

[`updateEstimates(_:for:)`](/documentation/CarPlay/CPNavigationSession/updateEstimates(_:for:))

Updates the travel estimates for the specified maneuver.

[`CPTravelEstimates`](/documentation/CarPlay/CPTravelEstimates)

An object that describes the time and distance remaining for a maneuver in a navigation session.



---

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)