Post not yet marked as solved
Hello
When I open CarPlay Simulator and connect the phone, it gives the following error:
Accessory is not Supported
Mac Mini MacOS 12.4 with iPhone 13 Pro iOS 15.5
Does anyone have a solution?
Post not yet marked as solved
This issue is a bit strange. On one machine at work, attempting to use the Xcode 15.0 CarPlay simulator results in devices saying "Accessory Not Supported". The redesigned 15.3 simulator crashes on launch.
We have tried 5 different phones with USB C, Lightning to USB C, Lighting to USB A, etc and the same result occurs on all of the above. Taking the same phones and cables to 4 other laptops works fine.
The non functioning machine connects to any other USB device just fine. We even tried different partitions, installing Xcode, different macOS versions, etc.
There are some suspicious parts of the log on the non working machine:
default 09:18:10.075726-0400 mobileactivationd Client certification requested by CarPlay Simulator
error 09:18:10.088862-0400 CarPlay Simulator Failed to obtain valid certificates from server: <private>
error 09:18:10.103753-0400 CarPlay Simulator Incoming message ID 0xaa04 AuthenticationFailed
and
error 09:18:09.452387-0400 CarPlaySimulatorDeviceLink RemotePairing.framework is not available.
default 09:18:09.452419-0400 CarPlaySimulatorDeviceLink RemotePairing.framework not found.
Meanwhile the working machines according to Activity Monitor is loading /Library/Apple/System/Library/PrivateFrameworks/RemotePairing.framework/Versions/A/RemotePairing just fine. The non working machine does have that file on disk, so that's not the issue.
The non working machine is a 2019 i9 16" MBP. Working machines include a 2018 i7 13" MBP, 2021 M1 Max 16" MBP, and 2020 M1 13" MBP.
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unsupported object <CPActionSheetTemplate: 0x600000883720> <identifier: 154853B1-42C9-4A2E-A2AA-8431664FCDC4, userInfo: (null), tabTitle: (null), tabImage: (null), showsTabBadge: 0> passed to presentTemplate:animated:completion:. Allowed classes: {(
CPGridTemplate,
CPListTemplate,
CPNowPlayingTemplate,
CPTabBarTemplate,
CPAlertTemplate,
CPVoiceControlTemplate
)}
Thanks in advance!
Post not yet marked as solved
When setting a custom pinImage on a CPPointOfInterest the anchor point is in the center of the image, the default pin is positioned so that the bottom of the pin is at the point on the map as expected
In an attempt to resolve this issue we have modified our custom pin images in code to offset them to add transparency so that the bottom of the pin locates correctly on the map
This however has introduced issues with how CarPlay resizes the icons, we are of course correctly utilising the carTraitCollection to get the information we need for the screen scale of the CarPlay device and using that in the UIGraphicsImageRendererFormat
Is there a way to correctly set the anchor point of a custom pinImage on CPPointOfInterest?
Post not yet marked as solved
Why is "CarPlay.app" text shown in Location Services? All other app listings display an icon instead of text - so this looks suspicious. It may be a bug though. Has anyone else seen this?
I’ve filed this via Apple Feedback app but no response from Apple yet.
Device is running iOS 16.2beta.
Post not yet marked as solved
I am trying to run my navigation app on a physical device, and want to view it using CarPlay Simulator (through XCode additional tools, NOT Hardware->Display->CarPlay), however, when I try to use the app, device has a Red dot next to it, and the simulator shows nothing.
What I've tried:
Running on a real CP device(my car): App works as intended, but want to run simulator so I can have live debugging
Forgetting CP device and reconnecting
All Steps of "Troubleshooting CP Simulator" (Updating to latest iOS, restarting phone, turn off hotspot, not connected to any other CP devices, ensure Firewall allows incoming connections)
Tried both Xcode 13 CP sim and Xcode 14 beta CP sim
Tried both work and personal laptops/phones
Ideas:
I am running on a M1 laptop, which could be messing with something. I am also running my Xcode in Rosetta(app has packages that cannot compile without Rosetta), but I don't believe this should be a problem because I am running on a physical device not Xcode simulator.
Also can't run on Hardware->Display->CarPlay because of
Application does not implement CarPlay template application lifecycle methods in its scene delegate and I can't figure out how to fix ("EXCLUDED_ARCHS[sdk=iphonesimulator*]"= "arm64" does not work)
I want to create a CPListImageRowItem/CPGridTemplate for the audio app which supports from iOS 13. for iOS14 and above I can able to do that with CPGridTemplate/ CPListImageRowItem but in iOS 13 how can we do? Because to support audio app from iOS13 I am using MPPlayableContentManager. So, are we able to achieve it iOS 13?
Grid Should look like below image
Please Suggest any way to achieve this kind of design?
Thanks in advance.
I am Trying to build a audio app which supports from iOS 13 and above.
iOS 13 - com.apple.developer.playable-content,
iOS 14 - com.apple.developer.carplay-audio
I have added above entitlements to support my app for below and above iOS 14 version.
<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>
<false/>
<key>UISceneConfigurations</key>
<dict>
<key>CPTemplateApplicationSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneClassName</key>
<string>CPTemplateApplicationScene</string>
<key>UISceneConfigurationName</key>
<string>CarPlay</string>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).CarSceneDelegate</string>
</dict>
</array>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneClassName</key>
<string>UIWindowScene</string>
<key>UISceneConfigurationName</key>
<string>Phone</string>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).PhoneSceneDelegate</string>
</dict>
</array>
</dict>
</dict>
</dict>
</plist>
This is how I added UIApplicationSceneManifest but problem here is that when we launch app on below ios14 im getting "Unable to Connect Error"
But if i add maps support entitlements i can able to render Grid or list templates.
So My question is how to add support for below and above iOS14 versions for audio app in same code base.
Thanks In advance.
Post not yet marked as solved
Description
I present a template to the CPTemplateApplicationSceneDelegate with CPInterfaceController presentTemplate(, animated:, completion:).
After this there are two ways to dismiss the template:
In case the presented template has a built-in "Cancel" / "Back" button (like CPVoiceControlTemplate), by pressing the button the template disappears.
You can call CPInterfaceController dismissTemplate(animated:, completion:), which could be connected to some underlying logic. Calling this also makes the template disappear correctly.
The issue can be seen in the Debug Memory Graph under the CarPlay section. In case:
After I dismiss the template by pressing the built-in button the presented template GOES OUT OF MEMORY (disappears from the Debug Memory Graph).
After I dismiss the template with the given function the presented template REMAINS IN MEMORY (stays in the Debug Memory Graph).
This is an unexpected behaviour in my opinion. If I recreate the template before presenting it, a new instance is added to the memory every time. In case of CPVoiceControlTemplate I had animated images in my voiceControlStates. These images take up significant memory and by always remaining in the memory leads to a memory issue.
My expectation is that both the built-in button press and the dismissTemplate(animated:, completion:) function should release the template from the memory.
Reproduction:
A:
Present a CPVoiceControlTemplate with CPInterfaceController.presentTemplate().
Press the built-in "Cancel" button in top leading corner of the template.
Check Debug Memory Graph under CarPlay section.
➡️ CPVoiceControlTemplate is NOT PRESENT in memory ✅😎
B:
Present a CPVoiceControlTemplate with CPInterfaceController.presentTemplate().
Call CPInterfaceController.dismissTemplate() after a timeout.
Check Debug Memory Graph under CarPlay section.
➡️ CPVoiceControlTemplate is PRESENT in memory ❌😞
Source code
//
// CarPlaySceneDelegate.swift
// EVNavigationCarplay
//
// Created by Ákos Morvai on 2023. 02. 21..
//
import CarPlay
import UIKit
class CarPlaySceneDelegate: NSObject {
var interfaceController: CPInterfaceController?
private func presentTemplate() {
let template = CPVoiceControlTemplate(voiceControlStates: [])
interfaceController?.presentTemplate(template, animated: true, completion: nil)
DispatchQueue.main.asyncAfter(deadline: .now() + 5) { [weak self] in
self?.interfaceController?.dismissTemplate(animated: true, completion: nil)
}
}
}
extension CarPlaySceneDelegate: CPTemplateApplicationSceneDelegate {
func templateApplicationScene(_ templateApplicationScene: CPTemplateApplicationScene, didConnect interfaceController: CPInterfaceController, to window: CPWindow) {
self.interfaceController = interfaceController
presentTemplate()
}
func templateApplicationScene(_ templateApplicationScene: CPTemplateApplicationScene, didDisconnect interfaceController: CPInterfaceController, from window: CPWindow) {
}
}
extension CarPlaySceneDelegate: CPTemplateApplicationDashboardSceneDelegate {
func templateApplicationDashboardScene(_ templateApplicationDashboardScene: CPTemplateApplicationDashboardScene, didConnect dashboardController: CPDashboardController, to window: UIWindow) {
}
func templateApplicationDashboardScene(_ templateApplicationDashboardScene: CPTemplateApplicationDashboardScene, didDisconnect dashboardController: CPDashboardController, from window: UIWindow) {
}
}
Debug Memory Graph after programmatic dismiss
Affected Xcode version
I currently use Xcode 15.2 but it happened in earlier versions as well.
Post not yet marked as solved
After the update to iOS 17, tapping on message notification shown on CarPlay Dashboard is navigating to the CarPlay app instead of announcing the message notification.
Announce Notifications turned ON
Announce Messages turned ON
Announce New Messages option is selected
Other apps message notifications are announced as expected when tapping on the notification implying that the settings are set as required.
Enabled com.apple.developer.carplay-communication
Class CustomCarPlaySceneDelegate: UIResponder, CPTemplateApplicationSceneDelegate {
func templateApplicationScene(_ templateApplicationScene: CPTemplateApplicationScene,
didConnect interfaceController: CPInterfaceController)
func templateApplicationScene(_ templateApplicationScene: CPTemplateApplicationScene,
didDisconnectInterfaceController interfaceController: CPInterfaceController)
func scene(_ scene: UIScene, willContinueUserActivityWithType userActivityType: String)
}
Application Specific Information:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unsupported object <CPActionSheetTemplate: 0x2819a4480> <identifier: CD077C44-7F3F-46CC-B713-35A0259124EA, userInfo: (null), tabTitle: (null), tabImage: (null), showsTabBadge: 0> passed to presentTemplate:animated:completion:. Allowed classes: {(
CPAlertTemplate,
CPVoiceControlTemplate,
CPGridTemplate,
CPListTemplate,
CPNowPlayingTemplate,
CPTabBarTemplate
)}'
[[NMCarPlayEventManage shareManage].carplayInterfaceController dismissTemplateAnimated:NO];
[[NMCarPlayEventManage shareManage].carplayInterfaceController presentTemplate:sp animated:YES];
Post not yet marked as solved
A feature of my CarPlay navigation app requires the iPhone app to be open, or recently backgrounded, to function. It requires access to the AppDelegate. Is there any way to quietly launch the iPhone app in the background from CarPlay.
I have tried deep linking, but the action of opening the URL requires the iPhone app to be active in the first place.
Post not yet marked as solved
Hi,
I am working on a CarPlay fueling/charging app and tried to add trailingNavigationBarButtons to a CPInformationTemplate after pushing it on the root template.
The button(s) are being displayed but the button action is not being executed.
Does anyone also have this issue?
Post not yet marked as solved
The documentation for CarPlay (https://developer.apple.com/documentation/carplay/requesting_carplay_entitlements) tells you to disable automatic signing in the section titled "Import the CarPlay Provisioning Profile":
Click All in the scope bar, and then deselect “Automatically manage signing”.
There have also been other posts in the past about the inability to use automatic signing with CarPlay: https://developer.apple.com/forums/thread/63468
However in a recent post of mine (https://developer.apple.com/forums/thread/717429?login=true&page=1#732392022) I was instructed how to set it up so that I could use automatic signing for the new user-assigned-device-name entitlement and it worked so I thought "Can I do the same thing for CarPlay?" and it seems to be working so far.
Is automatic signing with CarPlay now possible? We have been able to use automatic signing to archive successfully and run to real devices and verify that CarPlay is working. I'm crossing my fingers that we'll be able to submit and get the build approved and never have to touch manual signing again.
Hopefully it works and the documentation is just out of date.
Post not yet marked as solved
Hi, We are developing an infotainment system that includes a wireless CarPlay. Can someone confirm the expected behavior when a device connected via wireless car play should do in the below scenario.
iPhone connected through wireless car play and projection is active
in he CarPlay projection a call is going on.
Car play gets disconnected when user switches off the WiFi.
After these steps , should the call only continue on the phone or should the connected get transitioned to HFP ( Hands free profile) and call continue though the head unit in the car.
Do note, WiFi is switched OFF in phone so CarPlay can't restart without user switching it back ON
Post not yet marked as solved
Hi!
I'm sorry, if this is the wrong place to ask this. Please advice if you know a better place.
I recently bought a new Hyundai which comes with CarPlay. When I connect my iPhone with a cable, CarPlay is running fine and the Music is played in stereo on the car's speakers.
But when I start Apple Maps I can hear turn by turn voice commands in German. But they are only played in mono on he box next to the driver's seat. They are not played anywhere else, but the music stops for all boxes.
I tried to figure out, what the issue can be and how to communicate the issue to Apple. So I think it's related to this thread: https://forums.developer.apple.com/forums/thread/732202
Anything I can do? Is there a hidden setting to change that? For me it feels like a bug, I doubt that this is expected.
Thank you!
Post not yet marked as solved
In the Apple video entitled Optimize CarPlay for vehicle systems, from WWDC23, the section on Audio explains that our apps should support "enhancedSiri"
I can find no documentation anywhere to support how a developer might implement enhancedSiri?
Thank you
Mike
Post not yet marked as solved
Since XCode 15, we can't get our app in the app store no more. While uploading, we get the message: "Entitlement com.apple.developer.playable-content is missing".
The entitlement is for CarPlay and it worked for years -we did not change anything.Now with XCode 15, we had to remove CarPlay completely, otherwise we wouldn't get the app in the App Store no more.
Post not yet marked as solved
Hi iOS member,
I have a problem to use a SwiftUI on Carplay.
The swiftUI is not refreshed when @State properties are modified.
Only UiKit views refreshs well, on Carplay.
Is it exists a way to use swiftUI views on Carplay, for example to show a speed of the user on a Map application ?
Thank you for your help.
Here an example of SwiftUI view :
public struct FakeSpeedView: View {
@State var speed: Int = 90
let timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()
public init() {}
public var body: some View {
Text("Speed \(speed)")
.onReceive(timer) { _ in
var newValue = speed + 1
if newValue > 130 {
newValue = 90
}
print("FakeSpeedView update speed \(newValue)")
speed = newValue
}
}
}
And here, the ViewController used as rootViewController for CPWindow :
class ContentViewController: UIViewController {
private var circularProgressBarView: CircularProgressBarView!
private var circularViewDuration: TimeInterval = 2
private var speedVC: UIViewController!
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
setUpSpeedView()
setUpCircularProgressBarView()
}
private func setUpSpeedView() {
speedVC = UIHostingController(rootView: FakeSpeedView())
view.addSubview(speedVC.view)
speedVC.view.translatesAutoresizingMaskIntoConstraints = false
speedVC.view.pinEdges(to: view)
addChild(speedVC)
speedVC.didMove(toParent: self)
}
private func setUpCircularProgressBarView() {
// set view
circularProgressBarView = CircularProgressBarView(frame: .zero)
// align to the center of the screen
circularProgressBarView.center = view.center
// call the animation with circularViewDuration
circularProgressBarView.progressAnimation(duration: circularViewDuration)
// add this view to the view controller
view.addSubview(circularProgressBarView)
}
}
Post not yet marked as solved
[posted January 30, 2024]
Earlier this month, Apple Classical appeared as an app in CarPlay. Hallelujah!!! Three days later it disappeared after another update, apparently because all it did when activated via CarPlay was crash. OK, it was an oopsie (I get it. I spent 30 years in IT, and, well, it happens. They’re called “undocumented features”). Thing is: Apple hasn’t breathed a word about this event at all. Nothing. Nada. Zip. Zippo. Zilch. There’s a huge pent-up audience for this app in CarPlay. Is it coming? Please? Oh please oh please oh please?