<!--
{
  "availability" : [
    "iOS: 16.0.0 -",
    "iPadOS: 16.0.0 -",
    "macCatalyst: 16.0.0 -",
    "macOS: 13.3.0 -",
    "watchOS: 9.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CarKey",
  "identifier" : "/documentation/CarKey/CarKeyRemoteControlSessionDelegate",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "CarKey"
    ],
    "preciseIdentifier" : "s:6CarKey0aB28RemoteControlSessionDelegateP"
  },
  "title" : "CarKeyRemoteControlSessionDelegate"
}
-->

# CarKeyRemoteControlSessionDelegate

An interface you use to receive session- and vehicle-related
information from the system.

```
protocol CarKeyRemoteControlSessionDelegate
```

## Overview

The system uses the [`CarKeyRemoteControlSessionDelegate`](/documentation/CarKey/CarKeyRemoteControlSessionDelegate) protocol to
notify your app asynchronously when something happens. Adopt this
protocol in one of your objects and detect when the system invalidates
the session. If your vehicle is capable of sending data to your app, you
also use this protocol to receive any data the vehicle sends.

## Topics

### Receiving Data from the Vehicle

[`func remoteControlSession(CarKeyRemoteControlSession, vehicleDidUpdateReport: VehicleReport)`](/documentation/CarKey/CarKeyRemoteControlSessionDelegate/remoteControlSession(_:vehicleDidUpdateReport:))

Notifies your delegate object that the status of the specified
vehicle changed.

[`func remoteControlSession(CarKeyRemoteControlSession, didReceivePassthroughData: Data, fromVehicle: String)`](/documentation/CarKey/CarKeyRemoteControlSessionDelegate/remoteControlSession(_:didReceivePassthroughData:fromVehicle:))

Notifies the delegate object that the vehicle sent passthrough data
for you to handle.

### Handling Session Invalidation

[`func remoteControlSession(CarKeyRemoteControlSession, didInvalidateWithError: CarKeyErrorCode)`](/documentation/CarKey/CarKeyRemoteControlSessionDelegate/remoteControlSession(_:didInvalidateWithError:))

Notifies your delegate object that the session become invalid
for the specified reason.

### Instance Methods

[`func remoteControlSession(CarKeyRemoteControlSession, didCreateKey: String, forVehicle: String)`](/documentation/CarKey/CarKeyRemoteControlSessionDelegate/remoteControlSession(_:didCreateKey:forVehicle:))

Called to notify your app when a new key has been created.

---

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)