Adopt the CarPlay framework to enable your app on a driver's screen, whether the car supports CarPlay or CarPlay Ultra.

Documentation

Posts under CarPlay subtopic

Post

Replies

Boosts

Views

Activity

How can a CarPlay voice-based conversational app let the car show and control an active conversation?
We make Alchemy, a leadership coaching app on the App Store. In Alchemy hands-free mode, a person talks with their coach out loud. It is a live, two-way voice conversation over the internet, started from a button in the app. Many of our users do this while out for a walk and especially while driving. Here is how it looks on Audroid Auto : We have requested the CarPlay voice-based conversation entitlement (com.apple.developer.carplay-voice-based-conversation) and plan to build the CarPlay screen with CPVoiceControlTemplate. Question: for an app with this entitlement, what is the supported way to let the car know that a conversation is active, so that the car can show it on its own displays (for example a name or title in the instrument cluster) and the driver can pause or end it with the steering wheel controls? What we want. On an Android phone connected to the same car (an Audi with a digital instrument cluster), our voice conversation appears in the cluster's header as an active call with a name, and the steering wheel button ends it. We would like the same for iPhone users, using the APIs Apple intends. What we tried. iPhone 13, iOS 27.2 beta, wired CarPlay, same car: We started the conversation as an outgoing CallKit call (CXStartCallAction, generic handle, localizedCallerName set), with the audio background modes. The phone showed a call. The instrument cluster did not change, and the CarPlay Phone screen showed nothing. With the audio background mode only, the conversation works well through the car speakers and microphone, on the Home Screen and with the phone locked. The instrument cluster stays on the radio station, and CarPlay shows only the orange microphone indicator. If the car's own displays cannot show a voice-based conversational app's session, that is a useful answer too. In that case, what can the Voice Control template show the driver, and can the steering wheel controls act on the conversation at all? The goal is truly hands free so nobody gets a ticket while getting coaching help. 👍 Thank you.
0
0
38
15h
CarPlay Video entitlement pending for 15 days — is there an escalation path?
We submitted a request for the CarPlay Video entitlement (com.apple.developer.carplay-video) on September 15, 2026, and have not received an approval, rejection, or request for additional information after 15 days. We have already followed up through the original entitlement email thread and contacted Apple Developer Support several times. Across these exchanges, we have provided the same core information at least four times, including the entitlement Case-ID, submission date, business need, and confirmation email. However, several replies have simply asked us to provide the same information again. Developer Support has also confirmed that CarPlay entitlement requests are handled by a different team and that they do not have a direct contact or support channel for that reviewing team. At this point, is there any escalation path for a CarPlay Video entitlement request that has been pending without an update? Or is waiting several weeks currently normal for these requests? Any guidance from an Apple engineer or developers who have recently gone through the CarPlay Video entitlement process would be greatly appreciated. Thank you
0
0
31
21h
Supported native alphabet navigation for CPListTemplate on iOS 27
We need to retain CarPlay's native A–Z button between the scroll arrows in an audio app. This is core navigation for an album/artist library. We use CPListSection(items:header:sectionIndexTitle:) with single-character labels. The sectionIndexTitle API is still documented and is not deprecated in the Xcode 27 SDK. We need the supported native implementation, not a custom picker. On a parked physical head unit with an iPhone running iOS 27, our app displays populated album rows and section headers but no A–Z. Apple Music displays A–Z on the same head unit. We do not know Apple Music's internal implementation. A standalone, public-API-only reproduction is prepared; its CarPlay scene code is included below. Each tab supplies four A/B/M/Z sections of ten synthetic rows. The variants are initially populated, updated after loading, the full section initializer, and securely archived and decoded sections. No network, authentication or artwork is required. The original app displays functioning native alphabet navigation on the iOS 26.5 CarPlay simulator. The public probe compiles. We cannot run an end-to-end iOS 27 CarPlay simulator session because Device Hub requires a physical device, as confirmed in developer forum thread 834440. Separately, an isolated local diagnostic hosted the native list renderer with CarPlay traits. Both runtimes receive four nonempty index labels and all 40 rows. On iOS 26.5 (23F77), its table data source returns A/B/M/Z. On iOS 27.0 (24A434), the attached UICollectionViewDiffableDataSource returns nil index titles. Both the full initializer and secure archive round-trip preserve titles but produce the same result. This diagnostic is not an end-to-end CarPlay session and does not establish the exact internals on the physical phone. A standard UIKit table supplied with index titles and CarPlay traits still displays the native A–Z button on the same iOS 27 runtime. The control itself still exists; the observed failure is the template-to-index connection. This control experiment is also hosted in a phone window, not a CarPlay session. A standard UIKit collection data source implementing indexTitles(for:) also shows index letters on this runtime; the unmodified template renderer's collection data source returns nil. We have not modified that renderer. Questions: Did iOS 27 move native CPListTemplate alphabet navigation to another API, configuration, or presentation requirement? What is the supported migration? If sectionIndexTitle remains the correct input, is this a known regression in the new list renderer, and what supported correction is available? How should third-party audio apps reproduce Apple Music's native alphabet navigation on iOS 27 without private API or replacing it with a custom control? Please provide a working public-API example or identify the relevant fix/version. Reproduction: use the audio CarPlay entitlement and configure CPTemplateApplicationScene with CarScene as its delegate. This is the scene code from the compiling standalone probe: import CarPlay import UIKit @MainActor func indexedSections() -> [CPListSection] { ["A", "B", "M", "Z"].map { letter in let items = (1...10).map { number in let item = CPListItem(text: "\(letter) Album \(number)", detailText: "Synthetic test entry") item.handler = { _, completion in completion() } return item } return CPListSection(items: items, header: letter, sectionIndexTitle: letter) } } final class CarScene: UIResponder, CPTemplateApplicationSceneDelegate { func templateApplicationScene(_ scene: CPTemplateApplicationScene, didConnect controller: CPInterfaceController) { let ready = CPListTemplate(title: "Ready", sections: indexedSections()) ready.tabTitle = "Ready" ready.tabImage = UIImage(systemName: "list.bullet") let updated = CPListTemplate(title: "Updated", sections: [CPListSection(items: [CPListItem(text: "Loading", detailText: nil)])]) updated.tabTitle = "Updated" updated.tabImage = UIImage(systemName: "arrow.clockwise") let full = CPListTemplate(title: "Full Init", sections: indexedSections().map { CPListSection(items: $0.items, header: $0.header ?? "", headerSubtitle: nil, headerImage: nil, headerButton: nil, sectionIndexTitle: $0.sectionIndexTitle) }) full.tabTitle = "Full Init" full.tabImage = UIImage(systemName: "list.bullet.rectangle") let decoded: CPListTemplate do { let sections = try indexedSections().map { section in let data = try NSKeyedArchiver.archivedData(withRootObject: section, requiringSecureCoding: true) guard let restored = try NSKeyedUnarchiver.unarchivedObject(ofClass: CPListSection.self, from: data) else { throw CocoaError(.coderReadCorrupt) } return restored } decoded = CPListTemplate(title: "Decoded", sections: sections) } catch { decoded = CPListTemplate(title: "Decode failed", sections: [CPListSection(items: [ CPListItem(text: "Section decoding failed", detailText: String(describing: error)) ])]) } decoded.tabTitle = "Decoded" decoded.tabImage = UIImage(systemName: "shippingbox") controller.setRootTemplate(CPTabBarTemplate(templates: [ready, updated, full, decoded]), animated: false) { _, _ in } Task { @MainActor in try? await Task.sleep(for: .seconds(2)) updated.updateSections(indexedSections()) } } }
0
0
72
5d
CarPlay Video entitlement: approval timeline?
Hi everyone, I recently submitted a request for the CarPlay Video App entitlement (com.apple.developer.carplay-video) via Apple's CarPlay entitlement request form. I submitted the request about a week ago, but I haven't received any update yet — no approval, rejection, or request for additional information. About the app: It is a video player designed for user-provided M3U/M3U8 playlists and locally imported media files. The app does not host, provide, or stream any built-in content itself. It follows Apple's CarPlay Video APIs and is intended to support video playback only when the vehicle permits video playback, such as when parked. I've noticed recent discussions from developers who already hold the CarPlay Video entitlement, but details regarding the review timeline seem quite limited. For developers who have successfully obtained the CarPlay Video entitlement: Approximately how long did it take from submitting the request form to receiving the entitlement decision? Did Apple reach out for additional details or clarification during the review process? Did you need an active TestFlight build or App Store submission prior to receiving the entitlement? Is there any dashboard or portal to track the status of a CarPlay entitlement request, or is email the only channel? Any insights from your experience would be greatly appreciated! Thanks!
0
0
140
1w
CarPlay Simulator (from Additional tools) stuck on "Connecting to phone" since March 4th
We're experiencing an issue where the CarPlay Simulator (from Apple Developer Additional Tools) stopped connecting to our iPhones as of March 4th, 2025. The simulator gets stuck indefinitely on "Connecting to phone" and never completes the pairing. Environment App: Oracle Field Service iOS app (with CarPlay support) Tool: CarPlay Simulator from Apple Developer Additional Tools (developer.apple.com/download/all/) Issue start date: Wednesday, March 4th, 2025 Tested on: Multiple Mac machines, multiple iPhones Multiple CarPlay Simulator versions tested What's happening The CarPlay Simulator launches but displays "Connecting to phone" indefinitely. It was working correctly prior to March 4th with no changes on our end. What still works CarPlay functions correctly when the same iPhone is connected to a real car, confirming the issue is specific to the simulator. Troubleshooting steps already attempted Reset permissions and re-added the simulator Forgot the simulator and re-paired it Changed the USB cable Tested on multiple Mac machines Tested on multiple iPhones Tried multiple versions of the CarPlay Simulator Confirmed no VPN is in use Confirmed with IT, no OS updates or enterprise restrictions were applied Questions Has anyone else experienced this since March 4th? Was there a change in CarPlay Simulator behavior or a requirement on the Apple side (certificate, entitlement, protocol) around that date? Is there a known workaround or fix?
5
7
1.7k
1w
iOS 27: CPNowPlayingTemplate does not follow the active Now Playing client between an app's own client and its ApplicationMusicPlayer client (FB24840951)
On iOS 27, an app of mine that plays both its own audio and Apple Music tracks has two Now Playing clients in MediaRemote, as any app using ApplicationMusicPlayer.shared does: its own process's MPNowPlayingInfoCenter.default(), and MusicKit's player hosted out of process by com.apple.MediaPlayer.RemotePlayerService. MediaRemote elects between them correctly - the client whose process is making sound becomes active - and both the Lock Screen and the CarPlay dashboard follow the change. My CPNowPlayingTemplate does not. It stays on whichever client it was on when the change happened, so during an Apple Music track the car shows my own (now stale) entry with the clock frozen and a play glyph while music is audible; in some sessions the reverse, where my own audio after a track gets a blank template whose play presses are delivered to MusicKit's empty player and interrupt playback. From mediaremoted on iOS 27, handlePlaybackQueueRequest from CarPlayTemplateUIHost returns for (pid) > default throughout a track, and no contentItemChange for the RemotePlayerService path is ever posted to CarPlayTemplateUIHost, though it is posted to springboard, CarPlayApp and MediaRemoteUI. On iOS 26.6.1 with the same build, the same template host reads and commands RemotePlayerService/ during the track and > default afterwards. So the routing of commands to the active client is not what changed - what the template reads and sends to is. Filed as FB24840951 with mediaremoted captures from both OS versions, full sysdiagnose archives and screen recordings of the car screen beside the Lock Screen. Two questions: Is there a supported way for an audio app to tell CPNowPlayingTemplate which of its Now Playing clients to display? MPNowPlayingSession looks like the intended mechanism but accepts only AVPlayer instances, so it cannot represent either an AVAudioEngine graph or MusicKit's player; tested with a dormant AVPlayer it reported isActive == true every time and moved the template on some tracks and not others. Does the new MiniPlayer affect this? WWDC26's "Rev up your CarPlay app" says the MiniPlayer is new in iOS 27 and appears automatically for every app that shows now playing. Since the template was reworked in the same release this regressed in, does CPNowPlayingTemplate.shared.allowsMiniPlayer = false change which client is read? I have not tested it yet and will report back either way. Meanwhile the only thing that moves the car is republishing my own entry once a second as a new content item, which the template does re-read, so the clock steps instead of freezing. That ships in PodMelody 1.1.4, a workaround for an OS bug rather than a fix - and it doesn't resolve the mismatched play/pause glyph. If you have an audio app using ApplicationMusicPlayer and CarPlay, I would be glad to know whether you see the same thing, and in which car - duplicates on the Feedback are what get these prioritised.
0
0
164
1w
CarPlay custom symbols missing on iOS 27
We’re seeing custom symbol images disappear in CarPlay on iOS 27.0. Their text labels remain visible, and built-in SF Symbols still display correctly. We reproduced this in a small standalone app using: CPGridButton in CPListTemplate.headerGridButtons CPListImageRowItemCondensedElement The custom symbol is an SVG symbol asset loaded from a resource bundle: UIImage(named: "chapters", in: resourceBundle, compatibleWith: nil)?.withRenderingMode(.alwaysTemplate) For comparison, the same screen displays the built-in dot.radiowaves.left.and.right symbol. On iOS 26.6.1, the custom symbol and built-in symbol appear correctly in both controls. On iOS 27.0, the custom symbol is missing from both controls, while the built-in symbol remains visible. The failing device is an iPhone 13 Pro running iOS 27.0 (24A437), with the sample built using Xcode 27.0 (27A266a). Has anyone else encountered this? Is this a known regression, or is there a new requirement forsupplying custom symbols to CarPlay? Filed as FB24806621, with the standalone project and comparison photos.
1
0
180
2w
CarPlay: App Icon doesn't display badge count.
On the CarPlay view of our iOS app, we cannot get our CarPlay app icon to show a red badge count like our regular iPhone app icon does. This is using either UNUserNotificationCenter.current().setBadgeCount() and also relying on the content.badge value in local notifications. I see other non-Apple apps (WhatsApp for eg) can display badge counts on their icons, so know it must be possible. Our app is Driving Task category app. Is there some restriction on this category of app that would prevent badge counts showing? Is there some other user setting that would prevent badge counts showing?
0
0
123
2w
Low-latency, high-quality audio route w/wireless CarPlay?
Is there a supported way for a CarPlay audio app to request a lower-latency wireless playback route without communications-style audio processing or restricted volume behavior? .playback + .default on wired CarPlay gets you ~60ms latency route. The same on wireless CarPlay gets you ~1100ms latency. I know that wireless CarPlay can support faster connections as I have tested them. playAndRecord + .default and .playback + .voicePrompt negotiate approximately 160 ms output/presentation latency. However, on this head unit those paths have unacceptable side effects: The duplex route negotiates 24 kHz mono and removes or severely attenuates bass/haptic-engine content. The voice-prompt route alters volume semantics: steering-wheel/head-unit volume does not control our app’s level, and it appears to apply voice-oriented EQ or other processing. These routes therefore cannot substitute for full-bandwidth media playback, even though their latency is much better. 24 kHz mono would actually work for our app, if only it preserved the signal without voice/telephony EQ, bass removal, or special prompt-bus volume policy. Is there a documented, supported public API or AVAudioSession configuration (or other API even) that lets a CarPlay audio app request that kind of low-latency wireless media route? If not, is this an intentional limitation of wireless CarPlay media playback, and is there an appropriate enhancement-request path for real-time audio applications?
0
0
218
2w
CarPlay steering wheel Answer/End Call buttons not working on iPhone 17 Pro Max – buttons work over Bluetooth and with another iPhone
I’m experiencing a specific issue with Apple CarPlay and the steering-wheel phone controls in my 2026 Chery FX HEV. The problem is that when my iPhone 17 Pro Max is connected to CarPlay, I cannot answer or end phone calls using the steering-wheel Answer/End Call buttons (green/red phone buttons). The important part is that the buttons and the vehicle itself appear to be working correctly: When the iPhone is connected through Bluetooth only, without CarPlay, the steering-wheel Answer/End Call buttons work normally. When using CarPlay, I can still answer/end the call from the vehicle’s touchscreen, so calling itself works. Siri/voice control from the steering wheel works while CarPlay is active. I tested another iPhone (iPhone 14 running a non-beta/stable iOS version) in the same vehicle, and the steering-wheel Answer/End Call buttons worked correctly with CarPlay. Therefore, this appears to be specific to the interaction between my iPhone/iOS version and CarPlay rather than a defective steering-wheel button. What I have already tried I have tried: Removing/forgetting the vehicle from the iPhone and setting up CarPlay again multiple times. Removing and reconnecting Bluetooth. Restarting/force restarting the iPhone. Testing wireless CarPlay. Testing wired CarPlay using a USB cable. Testing Bluetooth without CarPlay — steering-wheel phone buttons work correctly. Testing another iPhone in the same car — the buttons work correctly with CarPlay. Testing short and long presses of the steering-wheel phone buttons. Checking Siri/voice control — this works correctly through the steering wheel. Answering calls directly from the CarPlay/vehicle touchscreen — this also works correctly. I also tried using a wired connection while attempting to remap/reconfigure the steering-wheel button, but this did not solve the problem. Any suggestions for additional troubleshooting, logs, diagnostics, or a way to reset/remap the CarPlay steering-wheel call controls would be appreciated.
1
0
217
2w
CPListItem and CPListImageRowItem text limited to 1 line on iOS 27
On iOS 27, CPListItem.text and CPListImageRowItem.text` are rendered as single-line with ellipsis truncation, regardless of the available vertical space. On iOS 26 and earlier, these properties wrapped to 2 lines before truncating. There is no public API (numberOfLines, lineLimit, or similar) on CPListItem, CPListImageRowItem, or CPListSection to control the number of text lines. The change appears to be a platform-level rendering default with no app-side opt-out. Steps to Reproduce Create a CPListTemplate with sections containing CPListItem or CPListImageRowItem items. Set the text property to a string long enough to require wrapping. Present the template via CPInterfaceController. Run on iOS 27. Expected Results The text property should wrap to multiple lines (2-3 lines) before truncating with an ellipsis, consistent with iOS 26 behavior. Row height should adjust dynamically to accommodate the wrapped text. Actual Results The text property is truncated to a single line with ellipsis. Row height remains fixed at a larger size, creating excessive vertical spacing between items. Environment iOS 27.0 (CarPlay) - issue present Xcode 27.0 beta 4 (27A5218g) Tested on physical CarPlay head unit and CarPlay Simulator
5
0
1.2k
3w
tabbar creating issue when loading an Empty CPListTemplate
I NEED TO DISPLAY two tabs in a CarPlay TabBarTemplateBuilder: Tab 1: Initially shows an empty list with a loading message, then updates with data when API call completes Tab 2: Immediately displays proper sections with data without waiting for Tab 1 to load Issues Occurring Issue #1: Second Tab Selection Unreliable Tapping the second tab doesn't switch tabs on some devices Only swiping left/right switches tabs (workaround) Behavior is inconsistent across devices **Issue #2: Second** Tab Title Not Visible Until Tab 1 Loads Even though Tab 2 loads its data asynchronously and independently Tab 2's title doesn't appear in the tab bar until Tab 1 finishes loading and populating This creates a poor user experience with missing/delayed tab labels
0
0
1.2k
Aug ’26
CarPlay - getting Progress Indicator on Image Row Condensed Element?
In our CarPlay implementation, I've been trying to get the progress indicator to appear on an image row item using the condensed element style. Is this possible? I have been able get spinners to appear on regular list items, but not on image row condensed elements. Trying to figure out what this means from the docs for listImageRowHandler: "CarPlay displays an asynchronous progress indicator until you call the completion closure." https://developer.apple.com/documentation/carplay/cplistimagerowitem/listimagerowhandler Here is a snippet of my code for the handler: let elements = myShortcuts.enumerated().map { index, shortcut in let element = CPListImageRowItemCondensedElement( // code here... ) return element } let row = CPListImageRowItem(text: nil, condensedElements: elements, allowsMultipleLines: true) row.listImageRowHandler = { [weak self] _, index, completion in self?.operate(at: index) { completion() } }
0
0
314
Aug ’26
includeAllNetworks still breaks wired CarPlay
I'm an developer and a fans of Apple, writing because you handled a forum thread that exactly matches an issue I can still reproduce today: "VPN causes CarPlay to not work" (developer.apple.com/forums/thread/712441), filed as FB11285432 back in August 2022. Summary: When any Packet Tunnel VPN with includeAllNetworks enabled is active, wired CarPlay fails to establish a connection. The phone charges normally, but the head unit never detects CarPlay. Steps to reproduce (iPhone on iOS [iOS 26.5.2], [Volkswagen's universal in-vehicle infotainment system for the 2023 and 2024 model years] head unit, USB-C wired CarPlay): Start a VPN configured with includeAllNetworks = true (reproduced with Shadowrocket; other users report the same with ExpressVPN, Google One VPN, etc.) Plug in the USB cable Result: CarPlay never connects. Charging works. Additional observations: With the VPN off, the same phone/cable/car connects instantly, ruling out hardware. If CarPlay is established first and the VPN is enabled afterward, the existing session keeps working — only the initial handshake/discovery is blocked. Consistent with thread 712441, excluding local networks does not help. This suggests includeAllNetworks blocks the mDNS/discovery traffic on the USB virtual Ethernet interface that CarPlay needs, with no exemption available. Two questions: Is there any supported configuration that allows includeAllNetworks and first-time CarPlay connection to coexist? If not, is FB11285432 still tracked? I'd be happy to file a new Feedback report referencing it with current repro details if that helps prioritization. Thanks for your time — your forum posts on Network Extension have been invaluable in diagnosing this.
0
0
751
Aug ’26
TabBar icons not displayed
Working on a CarPlay app (Driving App) and despite setting tab bar icons, they don’t display in either the simulator or two physical devices (one no older than 2024 and with a very large screen), I only see the textual description/name of the tab. Am I missing something ?
1
0
364
Aug ’26
CarPlay - Navigation Entitlement
We went through Apple's CarPlay documentation and, based on what we found, CarPlay provides templates for both Navigation and Audio, and our app has entitlements for both. One thing we would like to confirm before proceeding with implementation is whether a single app can expose both Navigation and Audio experiences in CarPlay, using both entitlements. Specifically, can the same CarPlay app provide a navigation experience (e.g., using CPMapTemplate) while also exposing an Audio/"Now Playing" experience, or does Apple expect these experiences to be implemented as separate apps or otherwise treated as separate CarPlay experiences? We'd also like to confirm whether CarPlay now allows an app to display a split-screen interface with navigation/map content on one side and audio controls or "Now Playing" controls on the other side. If so, is this something a single app with both Navigation and Audio entitlements can implement? The documentation explains the available templates and entitlements, but we couldn't find explicit guidance on whether the same app can leverage both Navigation and Audio experiences or whether these can be presented together in a split-screen layout. We'd like to clarify this before implementing the "Now Playing" screen, to ensure our approach aligns with Apple's CarPlay requirements and guidelines.
1
0
1.2k
Jul ’26
CarPlay: Is vehicle microphone capture without entering communications audio mode supported for third-party apps?
Hello, I am developing a native CarPlay application and would appreciate some clarification regarding AVAudioSession behaviour when using the vehicle microphone. The application is intentionally simple and designed to minimise driver distraction. The user presses a single button on the CarPlay screen, the application performs a brief (approximately five second) audio capture, performs application-specific processing on the captured audio, displays a simple confirmation to the user, and immediately releases the audio session. The goal is to allow the driver to continue their journey with as little interaction as possible. Because the audio being captured is often originating from the vehicle’s native DAB/FM radio rather than from the iPhone itself, preserving the existing listening experience during the brief capture is fundamental to the intended design. To better understand what is supported by CarPlay, I have carried out a number of controlled experiments. Test Environment Native CarPlay application Swift AVFoundation AVAudioSession AVAudioRecorder Vehicle connected via CarPlay Vehicle playing its native DAB radio Experiment 1 Configuration Category: AVAudioSession.Category.playAndRecord Mode: AVAudioSession.Mode.default Observed Route Input: CarPlay — CarAudio Output: CarPlay — CarAudio Result Recording succeeds using the vehicle microphone. Native DAB audio is muted during recording. The vehicle changes from “Audio Volume” to “Voice Volume”. When recording finishes and the AVAudioSession is deactivated, DAB resumes normally. Experiment 2 Changed only the session mode to: AVAudioSession.Mode.measurement Result Behaviour was identical to Experiment 1. Experiment 3 Changed only the session mode to: AVAudioSession.Mode.videoRecording Observed Route Input: iPhone microphone Output: CarPlay — CarAudio Result Input automatically switched from the vehicle microphone to the iPhone microphone. The vehicle remained in normal “Audio Volume”. However, the head unit switched away from its native DAB source to the CarPlay media source. Observation These experiments appear to suggest that the behaviour is specifically related to using the CarPlay “CarAudio” microphone route, rather than audio recording itself. Question Is this the expected behaviour for third-party CarPlay applications? More specifically: Is there any supported AVAudioSession configuration or CarPlay API that allows a third-party CarPlay application to perform a brief, user-initiated audio capture using the vehicle microphone without causing the head unit to enter its communications/voice audio mode or interrupt the vehicle’s native radio playback? If this behaviour is by design and no supported mechanism exists to achieve this, confirmation of that would be extremely valuable, as it would allow us to design the application accordingly. If additional information, sample code, AVAudioSession logs or detailed reproduction steps would be helpful, I would be more than happy to provide them. Thank you very much for your time. Kind regards, Neil Jenner Developer, HearSave
7
0
1.5k
Jul ’26
How can a CarPlay voice-based conversational app let the car show and control an active conversation?
We make Alchemy, a leadership coaching app on the App Store. In Alchemy hands-free mode, a person talks with their coach out loud. It is a live, two-way voice conversation over the internet, started from a button in the app. Many of our users do this while out for a walk and especially while driving. Here is how it looks on Audroid Auto : We have requested the CarPlay voice-based conversation entitlement (com.apple.developer.carplay-voice-based-conversation) and plan to build the CarPlay screen with CPVoiceControlTemplate. Question: for an app with this entitlement, what is the supported way to let the car know that a conversation is active, so that the car can show it on its own displays (for example a name or title in the instrument cluster) and the driver can pause or end it with the steering wheel controls? What we want. On an Android phone connected to the same car (an Audi with a digital instrument cluster), our voice conversation appears in the cluster's header as an active call with a name, and the steering wheel button ends it. We would like the same for iPhone users, using the APIs Apple intends. What we tried. iPhone 13, iOS 27.2 beta, wired CarPlay, same car: We started the conversation as an outgoing CallKit call (CXStartCallAction, generic handle, localizedCallerName set), with the audio background modes. The phone showed a call. The instrument cluster did not change, and the CarPlay Phone screen showed nothing. With the audio background mode only, the conversation works well through the car speakers and microphone, on the Home Screen and with the phone locked. The instrument cluster stays on the radio station, and CarPlay shows only the orange microphone indicator. If the car's own displays cannot show a voice-based conversational app's session, that is a useful answer too. In that case, what can the Voice Control template show the driver, and can the steering wheel controls act on the conversation at all? The goal is truly hands free so nobody gets a ticket while getting coaching help. 👍 Thank you.
Replies
0
Boosts
0
Views
38
Activity
15h
CarPlay Video entitlement pending for 15 days — is there an escalation path?
We submitted a request for the CarPlay Video entitlement (com.apple.developer.carplay-video) on September 15, 2026, and have not received an approval, rejection, or request for additional information after 15 days. We have already followed up through the original entitlement email thread and contacted Apple Developer Support several times. Across these exchanges, we have provided the same core information at least four times, including the entitlement Case-ID, submission date, business need, and confirmation email. However, several replies have simply asked us to provide the same information again. Developer Support has also confirmed that CarPlay entitlement requests are handled by a different team and that they do not have a direct contact or support channel for that reviewing team. At this point, is there any escalation path for a CarPlay Video entitlement request that has been pending without an update? Or is waiting several weeks currently normal for these requests? Any guidance from an Apple engineer or developers who have recently gone through the CarPlay Video entitlement process would be greatly appreciated. Thank you
Replies
0
Boosts
0
Views
31
Activity
21h
Supported native alphabet navigation for CPListTemplate on iOS 27
We need to retain CarPlay's native A–Z button between the scroll arrows in an audio app. This is core navigation for an album/artist library. We use CPListSection(items:header:sectionIndexTitle:) with single-character labels. The sectionIndexTitle API is still documented and is not deprecated in the Xcode 27 SDK. We need the supported native implementation, not a custom picker. On a parked physical head unit with an iPhone running iOS 27, our app displays populated album rows and section headers but no A–Z. Apple Music displays A–Z on the same head unit. We do not know Apple Music's internal implementation. A standalone, public-API-only reproduction is prepared; its CarPlay scene code is included below. Each tab supplies four A/B/M/Z sections of ten synthetic rows. The variants are initially populated, updated after loading, the full section initializer, and securely archived and decoded sections. No network, authentication or artwork is required. The original app displays functioning native alphabet navigation on the iOS 26.5 CarPlay simulator. The public probe compiles. We cannot run an end-to-end iOS 27 CarPlay simulator session because Device Hub requires a physical device, as confirmed in developer forum thread 834440. Separately, an isolated local diagnostic hosted the native list renderer with CarPlay traits. Both runtimes receive four nonempty index labels and all 40 rows. On iOS 26.5 (23F77), its table data source returns A/B/M/Z. On iOS 27.0 (24A434), the attached UICollectionViewDiffableDataSource returns nil index titles. Both the full initializer and secure archive round-trip preserve titles but produce the same result. This diagnostic is not an end-to-end CarPlay session and does not establish the exact internals on the physical phone. A standard UIKit table supplied with index titles and CarPlay traits still displays the native A–Z button on the same iOS 27 runtime. The control itself still exists; the observed failure is the template-to-index connection. This control experiment is also hosted in a phone window, not a CarPlay session. A standard UIKit collection data source implementing indexTitles(for:) also shows index letters on this runtime; the unmodified template renderer's collection data source returns nil. We have not modified that renderer. Questions: Did iOS 27 move native CPListTemplate alphabet navigation to another API, configuration, or presentation requirement? What is the supported migration? If sectionIndexTitle remains the correct input, is this a known regression in the new list renderer, and what supported correction is available? How should third-party audio apps reproduce Apple Music's native alphabet navigation on iOS 27 without private API or replacing it with a custom control? Please provide a working public-API example or identify the relevant fix/version. Reproduction: use the audio CarPlay entitlement and configure CPTemplateApplicationScene with CarScene as its delegate. This is the scene code from the compiling standalone probe: import CarPlay import UIKit @MainActor func indexedSections() -> [CPListSection] { ["A", "B", "M", "Z"].map { letter in let items = (1...10).map { number in let item = CPListItem(text: "\(letter) Album \(number)", detailText: "Synthetic test entry") item.handler = { _, completion in completion() } return item } return CPListSection(items: items, header: letter, sectionIndexTitle: letter) } } final class CarScene: UIResponder, CPTemplateApplicationSceneDelegate { func templateApplicationScene(_ scene: CPTemplateApplicationScene, didConnect controller: CPInterfaceController) { let ready = CPListTemplate(title: "Ready", sections: indexedSections()) ready.tabTitle = "Ready" ready.tabImage = UIImage(systemName: "list.bullet") let updated = CPListTemplate(title: "Updated", sections: [CPListSection(items: [CPListItem(text: "Loading", detailText: nil)])]) updated.tabTitle = "Updated" updated.tabImage = UIImage(systemName: "arrow.clockwise") let full = CPListTemplate(title: "Full Init", sections: indexedSections().map { CPListSection(items: $0.items, header: $0.header ?? "", headerSubtitle: nil, headerImage: nil, headerButton: nil, sectionIndexTitle: $0.sectionIndexTitle) }) full.tabTitle = "Full Init" full.tabImage = UIImage(systemName: "list.bullet.rectangle") let decoded: CPListTemplate do { let sections = try indexedSections().map { section in let data = try NSKeyedArchiver.archivedData(withRootObject: section, requiringSecureCoding: true) guard let restored = try NSKeyedUnarchiver.unarchivedObject(ofClass: CPListSection.self, from: data) else { throw CocoaError(.coderReadCorrupt) } return restored } decoded = CPListTemplate(title: "Decoded", sections: sections) } catch { decoded = CPListTemplate(title: "Decode failed", sections: [CPListSection(items: [ CPListItem(text: "Section decoding failed", detailText: String(describing: error)) ])]) } decoded.tabTitle = "Decoded" decoded.tabImage = UIImage(systemName: "shippingbox") controller.setRootTemplate(CPTabBarTemplate(templates: [ready, updated, full, decoded]), animated: false) { _, _ in } Task { @MainActor in try? await Task.sleep(for: .seconds(2)) updated.updateSections(indexedSections()) } } }
Replies
0
Boosts
0
Views
72
Activity
5d
CarPlay Video entitlement: approval timeline?
Hi everyone, I recently submitted a request for the CarPlay Video App entitlement (com.apple.developer.carplay-video) via Apple's CarPlay entitlement request form. I submitted the request about a week ago, but I haven't received any update yet — no approval, rejection, or request for additional information. About the app: It is a video player designed for user-provided M3U/M3U8 playlists and locally imported media files. The app does not host, provide, or stream any built-in content itself. It follows Apple's CarPlay Video APIs and is intended to support video playback only when the vehicle permits video playback, such as when parked. I've noticed recent discussions from developers who already hold the CarPlay Video entitlement, but details regarding the review timeline seem quite limited. For developers who have successfully obtained the CarPlay Video entitlement: Approximately how long did it take from submitting the request form to receiving the entitlement decision? Did Apple reach out for additional details or clarification during the review process? Did you need an active TestFlight build or App Store submission prior to receiving the entitlement? Is there any dashboard or portal to track the status of a CarPlay entitlement request, or is email the only channel? Any insights from your experience would be greatly appreciated! Thanks!
Replies
0
Boosts
0
Views
140
Activity
1w
CarPlay Simulator (from Additional tools) stuck on "Connecting to phone" since March 4th
We're experiencing an issue where the CarPlay Simulator (from Apple Developer Additional Tools) stopped connecting to our iPhones as of March 4th, 2025. The simulator gets stuck indefinitely on "Connecting to phone" and never completes the pairing. Environment App: Oracle Field Service iOS app (with CarPlay support) Tool: CarPlay Simulator from Apple Developer Additional Tools (developer.apple.com/download/all/) Issue start date: Wednesday, March 4th, 2025 Tested on: Multiple Mac machines, multiple iPhones Multiple CarPlay Simulator versions tested What's happening The CarPlay Simulator launches but displays "Connecting to phone" indefinitely. It was working correctly prior to March 4th with no changes on our end. What still works CarPlay functions correctly when the same iPhone is connected to a real car, confirming the issue is specific to the simulator. Troubleshooting steps already attempted Reset permissions and re-added the simulator Forgot the simulator and re-paired it Changed the USB cable Tested on multiple Mac machines Tested on multiple iPhones Tried multiple versions of the CarPlay Simulator Confirmed no VPN is in use Confirmed with IT, no OS updates or enterprise restrictions were applied Questions Has anyone else experienced this since March 4th? Was there a change in CarPlay Simulator behavior or a requirement on the Apple side (certificate, entitlement, protocol) around that date? Is there a known workaround or fix?
Replies
5
Boosts
7
Views
1.7k
Activity
1w
iOS 27: CPNowPlayingTemplate does not follow the active Now Playing client between an app's own client and its ApplicationMusicPlayer client (FB24840951)
On iOS 27, an app of mine that plays both its own audio and Apple Music tracks has two Now Playing clients in MediaRemote, as any app using ApplicationMusicPlayer.shared does: its own process's MPNowPlayingInfoCenter.default(), and MusicKit's player hosted out of process by com.apple.MediaPlayer.RemotePlayerService. MediaRemote elects between them correctly - the client whose process is making sound becomes active - and both the Lock Screen and the CarPlay dashboard follow the change. My CPNowPlayingTemplate does not. It stays on whichever client it was on when the change happened, so during an Apple Music track the car shows my own (now stale) entry with the clock frozen and a play glyph while music is audible; in some sessions the reverse, where my own audio after a track gets a blank template whose play presses are delivered to MusicKit's empty player and interrupt playback. From mediaremoted on iOS 27, handlePlaybackQueueRequest from CarPlayTemplateUIHost returns for (pid) > default throughout a track, and no contentItemChange for the RemotePlayerService path is ever posted to CarPlayTemplateUIHost, though it is posted to springboard, CarPlayApp and MediaRemoteUI. On iOS 26.6.1 with the same build, the same template host reads and commands RemotePlayerService/ during the track and > default afterwards. So the routing of commands to the active client is not what changed - what the template reads and sends to is. Filed as FB24840951 with mediaremoted captures from both OS versions, full sysdiagnose archives and screen recordings of the car screen beside the Lock Screen. Two questions: Is there a supported way for an audio app to tell CPNowPlayingTemplate which of its Now Playing clients to display? MPNowPlayingSession looks like the intended mechanism but accepts only AVPlayer instances, so it cannot represent either an AVAudioEngine graph or MusicKit's player; tested with a dormant AVPlayer it reported isActive == true every time and moved the template on some tracks and not others. Does the new MiniPlayer affect this? WWDC26's "Rev up your CarPlay app" says the MiniPlayer is new in iOS 27 and appears automatically for every app that shows now playing. Since the template was reworked in the same release this regressed in, does CPNowPlayingTemplate.shared.allowsMiniPlayer = false change which client is read? I have not tested it yet and will report back either way. Meanwhile the only thing that moves the car is republishing my own entry once a second as a new content item, which the template does re-read, so the clock steps instead of freezing. That ships in PodMelody 1.1.4, a workaround for an OS bug rather than a fix - and it doesn't resolve the mismatched play/pause glyph. If you have an audio app using ApplicationMusicPlayer and CarPlay, I would be glad to know whether you see the same thing, and in which car - duplicates on the Feedback are what get these prioritised.
Replies
0
Boosts
0
Views
164
Activity
1w
CarPlay custom symbols missing on iOS 27
We’re seeing custom symbol images disappear in CarPlay on iOS 27.0. Their text labels remain visible, and built-in SF Symbols still display correctly. We reproduced this in a small standalone app using: CPGridButton in CPListTemplate.headerGridButtons CPListImageRowItemCondensedElement The custom symbol is an SVG symbol asset loaded from a resource bundle: UIImage(named: "chapters", in: resourceBundle, compatibleWith: nil)?.withRenderingMode(.alwaysTemplate) For comparison, the same screen displays the built-in dot.radiowaves.left.and.right symbol. On iOS 26.6.1, the custom symbol and built-in symbol appear correctly in both controls. On iOS 27.0, the custom symbol is missing from both controls, while the built-in symbol remains visible. The failing device is an iPhone 13 Pro running iOS 27.0 (24A437), with the sample built using Xcode 27.0 (27A266a). Has anyone else encountered this? Is this a known regression, or is there a new requirement forsupplying custom symbols to CarPlay? Filed as FB24806621, with the standalone project and comparison photos.
Replies
1
Boosts
0
Views
180
Activity
2w
CarPlay: App Icon doesn't display badge count.
On the CarPlay view of our iOS app, we cannot get our CarPlay app icon to show a red badge count like our regular iPhone app icon does. This is using either UNUserNotificationCenter.current().setBadgeCount() and also relying on the content.badge value in local notifications. I see other non-Apple apps (WhatsApp for eg) can display badge counts on their icons, so know it must be possible. Our app is Driving Task category app. Is there some restriction on this category of app that would prevent badge counts showing? Is there some other user setting that would prevent badge counts showing?
Replies
0
Boosts
0
Views
123
Activity
2w
Low-latency, high-quality audio route w/wireless CarPlay?
Is there a supported way for a CarPlay audio app to request a lower-latency wireless playback route without communications-style audio processing or restricted volume behavior? .playback + .default on wired CarPlay gets you ~60ms latency route. The same on wireless CarPlay gets you ~1100ms latency. I know that wireless CarPlay can support faster connections as I have tested them. playAndRecord + .default and .playback + .voicePrompt negotiate approximately 160 ms output/presentation latency. However, on this head unit those paths have unacceptable side effects: The duplex route negotiates 24 kHz mono and removes or severely attenuates bass/haptic-engine content. The voice-prompt route alters volume semantics: steering-wheel/head-unit volume does not control our app’s level, and it appears to apply voice-oriented EQ or other processing. These routes therefore cannot substitute for full-bandwidth media playback, even though their latency is much better. 24 kHz mono would actually work for our app, if only it preserved the signal without voice/telephony EQ, bass removal, or special prompt-bus volume policy. Is there a documented, supported public API or AVAudioSession configuration (or other API even) that lets a CarPlay audio app request that kind of low-latency wireless media route? If not, is this an intentional limitation of wireless CarPlay media playback, and is there an appropriate enhancement-request path for real-time audio applications?
Replies
0
Boosts
0
Views
218
Activity
2w
CarPlay steering wheel Answer/End Call buttons not working on iPhone 17 Pro Max – buttons work over Bluetooth and with another iPhone
I’m experiencing a specific issue with Apple CarPlay and the steering-wheel phone controls in my 2026 Chery FX HEV. The problem is that when my iPhone 17 Pro Max is connected to CarPlay, I cannot answer or end phone calls using the steering-wheel Answer/End Call buttons (green/red phone buttons). The important part is that the buttons and the vehicle itself appear to be working correctly: When the iPhone is connected through Bluetooth only, without CarPlay, the steering-wheel Answer/End Call buttons work normally. When using CarPlay, I can still answer/end the call from the vehicle’s touchscreen, so calling itself works. Siri/voice control from the steering wheel works while CarPlay is active. I tested another iPhone (iPhone 14 running a non-beta/stable iOS version) in the same vehicle, and the steering-wheel Answer/End Call buttons worked correctly with CarPlay. Therefore, this appears to be specific to the interaction between my iPhone/iOS version and CarPlay rather than a defective steering-wheel button. What I have already tried I have tried: Removing/forgetting the vehicle from the iPhone and setting up CarPlay again multiple times. Removing and reconnecting Bluetooth. Restarting/force restarting the iPhone. Testing wireless CarPlay. Testing wired CarPlay using a USB cable. Testing Bluetooth without CarPlay — steering-wheel phone buttons work correctly. Testing another iPhone in the same car — the buttons work correctly with CarPlay. Testing short and long presses of the steering-wheel phone buttons. Checking Siri/voice control — this works correctly through the steering wheel. Answering calls directly from the CarPlay/vehicle touchscreen — this also works correctly. I also tried using a wired connection while attempting to remap/reconfigure the steering-wheel button, but this did not solve the problem. Any suggestions for additional troubleshooting, logs, diagnostics, or a way to reset/remap the CarPlay steering-wheel call controls would be appreciated.
Replies
1
Boosts
0
Views
217
Activity
2w
iOS 27 CarPlay section headers disappear with detail text or images
Adding an image or detail text to a CPListSection makes the whole header disappear. With no detailText or headerImage With detailText or headerImage FB24061858 open but no response.
Replies
1
Boosts
1
Views
363
Activity
3w
How can I request the Carplay Navigation entitlement?
I need the Carplay Navigation App entitlement (com.apple.developer.carplay-maps) but I can't see it listed in the Capability Request list in App Store Connect. What shoul I do to request it?
Replies
0
Boosts
0
Views
266
Activity
3w
CPListItem and CPListImageRowItem text limited to 1 line on iOS 27
On iOS 27, CPListItem.text and CPListImageRowItem.text` are rendered as single-line with ellipsis truncation, regardless of the available vertical space. On iOS 26 and earlier, these properties wrapped to 2 lines before truncating. There is no public API (numberOfLines, lineLimit, or similar) on CPListItem, CPListImageRowItem, or CPListSection to control the number of text lines. The change appears to be a platform-level rendering default with no app-side opt-out. Steps to Reproduce Create a CPListTemplate with sections containing CPListItem or CPListImageRowItem items. Set the text property to a string long enough to require wrapping. Present the template via CPInterfaceController. Run on iOS 27. Expected Results The text property should wrap to multiple lines (2-3 lines) before truncating with an ellipsis, consistent with iOS 26 behavior. Row height should adjust dynamically to accommodate the wrapped text. Actual Results The text property is truncated to a single line with ellipsis. Row height remains fixed at a larger size, creating excessive vertical spacing between items. Environment iOS 27.0 (CarPlay) - issue present Xcode 27.0 beta 4 (27A5218g) Tested on physical CarPlay head unit and CarPlay Simulator
Replies
5
Boosts
0
Views
1.2k
Activity
3w
tabbar creating issue when loading an Empty CPListTemplate
I NEED TO DISPLAY two tabs in a CarPlay TabBarTemplateBuilder: Tab 1: Initially shows an empty list with a loading message, then updates with data when API call completes Tab 2: Immediately displays proper sections with data without waiting for Tab 1 to load Issues Occurring Issue #1: Second Tab Selection Unreliable Tapping the second tab doesn't switch tabs on some devices Only swiping left/right switches tabs (workaround) Behavior is inconsistent across devices **Issue #2: Second** Tab Title Not Visible Until Tab 1 Loads Even though Tab 2 loads its data asynchronously and independently Tab 2's title doesn't appear in the tab bar until Tab 1 finishes loading and populating This creates a poor user experience with missing/delayed tab labels
Replies
0
Boosts
0
Views
1.2k
Activity
Aug ’26
CarPlay - getting Progress Indicator on Image Row Condensed Element?
In our CarPlay implementation, I've been trying to get the progress indicator to appear on an image row item using the condensed element style. Is this possible? I have been able get spinners to appear on regular list items, but not on image row condensed elements. Trying to figure out what this means from the docs for listImageRowHandler: "CarPlay displays an asynchronous progress indicator until you call the completion closure." https://developer.apple.com/documentation/carplay/cplistimagerowitem/listimagerowhandler Here is a snippet of my code for the handler: let elements = myShortcuts.enumerated().map { index, shortcut in let element = CPListImageRowItemCondensedElement( // code here... ) return element } let row = CPListImageRowItem(text: nil, condensedElements: elements, allowsMultipleLines: true) row.listImageRowHandler = { [weak self] _, index, completion in self?.operate(at: index) { completion() } }
Replies
0
Boosts
0
Views
314
Activity
Aug ’26
includeAllNetworks still breaks wired CarPlay
I'm an developer and a fans of Apple, writing because you handled a forum thread that exactly matches an issue I can still reproduce today: "VPN causes CarPlay to not work" (developer.apple.com/forums/thread/712441), filed as FB11285432 back in August 2022. Summary: When any Packet Tunnel VPN with includeAllNetworks enabled is active, wired CarPlay fails to establish a connection. The phone charges normally, but the head unit never detects CarPlay. Steps to reproduce (iPhone on iOS [iOS 26.5.2], [Volkswagen's universal in-vehicle infotainment system for the 2023 and 2024 model years] head unit, USB-C wired CarPlay): Start a VPN configured with includeAllNetworks = true (reproduced with Shadowrocket; other users report the same with ExpressVPN, Google One VPN, etc.) Plug in the USB cable Result: CarPlay never connects. Charging works. Additional observations: With the VPN off, the same phone/cable/car connects instantly, ruling out hardware. If CarPlay is established first and the VPN is enabled afterward, the existing session keeps working — only the initial handshake/discovery is blocked. Consistent with thread 712441, excluding local networks does not help. This suggests includeAllNetworks blocks the mDNS/discovery traffic on the USB virtual Ethernet interface that CarPlay needs, with no exemption available. Two questions: Is there any supported configuration that allows includeAllNetworks and first-time CarPlay connection to coexist? If not, is FB11285432 still tracked? I'd be happy to file a new Feedback report referencing it with current repro details if that helps prioritization. Thanks for your time — your forum posts on Network Extension have been invaluable in diagnosing this.
Replies
0
Boosts
0
Views
751
Activity
Aug ’26
CarPlay CPListItem.accessoryImage display incorrectly on IOS 27 beta 4
I'm testing iOS 27 and face this issue that the accessoryImage on the CPListItem is no longer shown properly. It works fine up until iOS 26.5 but on 27 it is way to small. Check attached screen shot for details. Also filed FB23903072, hope this gets fixed before iOS 27 final arrives. 🤞
Replies
3
Boosts
0
Views
850
Activity
Aug ’26
TabBar icons not displayed
Working on a CarPlay app (Driving App) and despite setting tab bar icons, they don’t display in either the simulator or two physical devices (one no older than 2024 and with a very large screen), I only see the textual description/name of the tab. Am I missing something ?
Replies
1
Boosts
0
Views
364
Activity
Aug ’26
CarPlay - Navigation Entitlement
We went through Apple's CarPlay documentation and, based on what we found, CarPlay provides templates for both Navigation and Audio, and our app has entitlements for both. One thing we would like to confirm before proceeding with implementation is whether a single app can expose both Navigation and Audio experiences in CarPlay, using both entitlements. Specifically, can the same CarPlay app provide a navigation experience (e.g., using CPMapTemplate) while also exposing an Audio/"Now Playing" experience, or does Apple expect these experiences to be implemented as separate apps or otherwise treated as separate CarPlay experiences? We'd also like to confirm whether CarPlay now allows an app to display a split-screen interface with navigation/map content on one side and audio controls or "Now Playing" controls on the other side. If so, is this something a single app with both Navigation and Audio entitlements can implement? The documentation explains the available templates and entitlements, but we couldn't find explicit guidance on whether the same app can leverage both Navigation and Audio experiences or whether these can be presented together in a split-screen layout. We'd like to clarify this before implementing the "Now Playing" screen, to ensure our approach aligns with Apple's CarPlay requirements and guidelines.
Replies
1
Boosts
0
Views
1.2k
Activity
Jul ’26
CarPlay: Is vehicle microphone capture without entering communications audio mode supported for third-party apps?
Hello, I am developing a native CarPlay application and would appreciate some clarification regarding AVAudioSession behaviour when using the vehicle microphone. The application is intentionally simple and designed to minimise driver distraction. The user presses a single button on the CarPlay screen, the application performs a brief (approximately five second) audio capture, performs application-specific processing on the captured audio, displays a simple confirmation to the user, and immediately releases the audio session. The goal is to allow the driver to continue their journey with as little interaction as possible. Because the audio being captured is often originating from the vehicle’s native DAB/FM radio rather than from the iPhone itself, preserving the existing listening experience during the brief capture is fundamental to the intended design. To better understand what is supported by CarPlay, I have carried out a number of controlled experiments. Test Environment Native CarPlay application Swift AVFoundation AVAudioSession AVAudioRecorder Vehicle connected via CarPlay Vehicle playing its native DAB radio Experiment 1 Configuration Category: AVAudioSession.Category.playAndRecord Mode: AVAudioSession.Mode.default Observed Route Input: CarPlay — CarAudio Output: CarPlay — CarAudio Result Recording succeeds using the vehicle microphone. Native DAB audio is muted during recording. The vehicle changes from “Audio Volume” to “Voice Volume”. When recording finishes and the AVAudioSession is deactivated, DAB resumes normally. Experiment 2 Changed only the session mode to: AVAudioSession.Mode.measurement Result Behaviour was identical to Experiment 1. Experiment 3 Changed only the session mode to: AVAudioSession.Mode.videoRecording Observed Route Input: iPhone microphone Output: CarPlay — CarAudio Result Input automatically switched from the vehicle microphone to the iPhone microphone. The vehicle remained in normal “Audio Volume”. However, the head unit switched away from its native DAB source to the CarPlay media source. Observation These experiments appear to suggest that the behaviour is specifically related to using the CarPlay “CarAudio” microphone route, rather than audio recording itself. Question Is this the expected behaviour for third-party CarPlay applications? More specifically: Is there any supported AVAudioSession configuration or CarPlay API that allows a third-party CarPlay application to perform a brief, user-initiated audio capture using the vehicle microphone without causing the head unit to enter its communications/voice audio mode or interrupt the vehicle’s native radio playback? If this behaviour is by design and no supported mechanism exists to achieve this, confirmation of that would be extremely valuable, as it would allow us to design the application accordingly. If additional information, sample code, AVAudioSession logs or detailed reproduction steps would be helpful, I would be more than happy to provide them. Thank you very much for your time. Kind regards, Neil Jenner Developer, HearSave
Replies
7
Boosts
0
Views
1.5k
Activity
Jul ’26