---
title: CarKeyRemoteControlSession
framework: CarKey
role: symbol
role_heading: Class
platforms: [iOS 16.0+, iPadOS 16.0+, Mac Catalyst 16.0+, macOS 13.3+, watchOS 9.0+]
path: carkey/carkeyremotecontrolsession
---

# CarKeyRemoteControlSession

The object that manages communication with the vehicles you manufacture.

## Declaration

```swift
class CarKeyRemoteControlSession
```

## Overview

Overview A CarKeyRemoteControlSession object coordinates interactions between your app and your company’s make of vehicles. This object works with the system to transmit data securely to and from a vehicle, and to report results back to your app. Use this object to send commands or data directly to a vehicle, and to get information about the available vehicles and their current configuration. Don’t create this object directly. Instead, call the start(delegate:subscriptionRange:with:) method to create a new session object. When you finish interacting with the vehicle, call the session’s end() method to close out the session and prevent further access. You can have only one active session at a time. If you try to start a second session, start(delegate:subscriptionRange:with:) doesn’t return until the currently active session becomes invalid. When you configure a new session, provide a delegate object to receive data from vehicle-initiated transfers. The system also uses your delegate notify you when the configuration of a vehicle changes. For example, it lets you know when connectivity to the vehicle changes. The delegate must adopt the CarKeyRemoteControlSessionDelegate protocol. note: If your app has an active session, the system automatically ends that session when your app enters the background. Upon reentering the foreground, you must create a new session to communicate with your vehicle again.

## Topics

### Performing Vehicle-Related Actions

- [perform(_:)](carkey/carkeyremotecontrolsession/perform(_:)-8ac0c.md)
- [perform(_:)](carkey/carkeyremotecontrolsession/perform(_:)-7mpsy.md)

### Sending Data to the Vehicle

- [sendPassthroughData(_:toVehicle:)](carkey/carkeyremotecontrolsession/sendpassthroughdata(_:tovehicle:).md)

### Closing the Session

- [end()](carkey/carkeyremotecontrolsession/end().md)

### Getting Vehicle Information

- [vehicleReports](carkey/carkeyremotecontrolsession/vehiclereports.md)
- [isPassiveEntryAvailable(forVehicle:)](carkey/carkeyremotecontrolsession/ispassiveentryavailable(forvehicle:).md)

### Structures

- [CarKeyRemoteControlSession.Attestation](carkey/carkeyremotecontrolsession/attestation.md)

### Instance Methods

- [perform(_:continuationStrategy:)](carkey/carkeyremotecontrolsession/perform(_:continuationstrategy:).md)
- [sign(data:forVehicle:)](carkey/carkeyremotecontrolsession/sign(data:forvehicle:).md)

### Enumerations

- [CarKeyRemoteControlSession.ContinuationStrategy](carkey/carkeyremotecontrolsession/continuationstrategy.md)

## See Also

### Setup

- [CarKeyRemoteControl](carkey/carkeyremotecontrol.md)
- [CarKeyRemoteControlSessionDelegate](carkey/carkeyremotecontrolsessiondelegate.md)
- [VehicleReport](carkey/vehiclereport.md)
