Skip to content

iOS setup

iOS car support uses CarPlay templates. Apple must approve the CarPlay entitlement for your app category before the app can ship with CarPlay support.

Add a CarPlay scene configuration to ios/App/App/Info.plist and point it to the plugin scene delegate.

For Swift Package Manager, use:

<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>
<true/>
<key>UISceneConfigurations</key>
<dict>
<key>CPTemplateApplicationSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneClassName</key>
<string>CPTemplateApplicationScene</string>
<key>UISceneDelegateClassName</key>
<string>AutoPlugin.AutoCarPlaySceneDelegate</string>
</dict>
</array>
</dict>
</dict>

For CocoaPods, the delegate module is commonly:

<string>CapgoCapacitorAuto.AutoCarPlaySceneDelegate</string>

Request the CarPlay entitlement for the app category that matches your use case. The plugin renders a simple CPListTemplate, but Apple still decides which templates and categories are allowed for production distribution.

Terminal window
npx cap sync ios
  • setRootTemplate updates the CarPlay list template when the car display is connected.
  • CarPlay row selection emits carAction to JavaScript.
  • If CarPlay connects before the WebView listener is ready, retained events are delivered when the plugin attaches.

CarPlay does not render your Capacitor WebView. Keep car rows short and use them as native intent triggers for phone app logic.