<!--
{
  "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/CarKeyRemoteControl",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "CarKey"
    ],
    "preciseIdentifier" : "s:6CarKey0aB13RemoteControlC"
  },
  "title" : "CarKeyRemoteControl"
}
-->

# CarKeyRemoteControl

The object you use to start a new vehicle-related session.

```
class CarKeyRemoteControl
```

## Overview

Use a [`CarKeyRemoteControl`](/documentation/CarKey/CarKeyRemoteControl) object to create the session
your app uses to communicate with the vehicles your company
manufactures. You don’t create an instance of this object.
Instead, call the [`start(delegate:subscriptionRange:with:)`](/documentation/CarKey/CarKeyRemoteControl/start(delegate:subscriptionRange:with:))
class method to request a new session object. The system
retrieves the relevant vehicle information from person’s Apple
Wallet and adds vehicles that match your company’s make to
the session.

Start a new session only when your app is running in the foreground.
If your app enters the background, end the current session and
start a new one when your app returns to the foreground.

## Topics

### Creating the Session Object

[`class func start(delegate: any CarKeyRemoteControlSessionDelegate, subscriptionRange: ClosedRange<Int>?, with: DispatchQueue?) async throws -> CarKeyRemoteControlSession`](/documentation/CarKey/CarKeyRemoteControl/start(delegate:subscriptionRange:with:))

Creates and returns a new session object to access the
provisioned vehicles.

### Type Methods

[`class func registerForLaunchOnCarKeyEvent() throws`](/documentation/CarKey/CarKeyRemoteControl/registerForLaunchOnCarKeyEvent())

Register your app to be relaunched in the background on CarKey events.
Under certain conditions the system will not relaunch the app regardless of CarKey events.

[`class func unregisterForLaunchOnCarKeyEvent() throws`](/documentation/CarKey/CarKeyRemoteControl/unregisterForLaunchOnCarKeyEvent())

Unregister your app so it’s no longer relaunched in the background on CarKey events.

---

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)