Add CarPlay support to your navigation app using CarPlay.

Posts under CarPlay tag

90 Posts
Sort by:

Post

Replies

Boosts

Views

Activity

Apple Classical in CarPlay?
[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?
0
0
620
Jan ’24
CarPlay call continuation on disconnection
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
0
0
416
Feb ’24
Instrument cluster don't appear in a car
I'm working on Instrument cluster support for our CarPlay app. We already supported Dashboard and its working well. On the CarPlay simulator I see my Instrument cluster ok, but on the real car - not. I think, that were Apple Maps appear in Instrument Cluster - there and others app with Instrument Cluster support have to show, right? On the same car I see that Apple Maps showing in Instrument Cluster, but not my app. I've done everything from this video <key>CPSupportsInstrumentClusterNavigationScene</key> <true/> and even <key>UIApplicationSupportsMultipleScenes</key> <true/> What's else have to be done for showing my app in the Instrument Cluster?
0
1
546
Jan ’24
Driving Task Crash When Adding Action Sheet or Alert
I have a driving task app and am trying to show a CPActionSheetTemplate or a CPAlertTemplate. Both of these are crashing showing: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unsupported object <CPActionSheetTemplate: 0x6000030319e0> <identifier: C744031B-99F6-4999-AF19-6ED43140502B, userInfo: (null), tabTitle: (null), tabImage: (null), showsTabBadge: 0> passed to pushTemplate:animated:completion:. Allowed classes: {( CPSearchTemplate, CPNowPlayingTemplate, CPPointOfInterestTemplate, CPListTemplate, CPInformationTemplate, CPContactTemplate, CPGridTemplate, CPMapTemplate )}' This is very strange, because in the docs all app types are allowed to show ActionSheets and Alerts. Why is this crashing?
1
0
476
Jan ’24
CPListImageRowItem customisation
Hi I was trying to design the above UI, But using the below code of CPListImageRowItem func templateApplicationScene(_ templateApplicationScene: CPTemplateApplicationScene, didConnect interfaceController: CPInterfaceController) { self.interfaceController = interfaceController // Create a list row item with images let item = CPListImageRowItem(text: "Category", images: [UIImage(named: "cover.jpeg")!, UIImage(named: "cover2.jpeg")!, UIImage(named: "discover.jpeg")!, UIImage(named: "thumbnail.jpeg")!]) // Create a list section let section = CPListSection(items: [item]) // Create a list template with the section let listTemplate = CPListTemplate(title: "Your Template Title", sections: [section]) // Set the template on the interface controller interfaceController.setRootTemplate(listTemplate, animated: true) } I was getting only header and below image items but detailed text under images are no way to set. can any one help me out of this
1
1
675
Jan ’24
ETA panel and Manoeuvres not showing if disconnect and connect CarPlay
We have an app with CarPlay support. There you can preview a trip and start it. However, if we start a trip (see eta and manoeuvres), then turn off the car (or tap disconnect in CarPlay Simulator), then turn it again - CarPlay launched, but there's no eta panel and manoeuvres in it. Even if cancel this trip and start new. Only after relaunch the app eta and manoeuvres appear again. Is someone experienced something similar? Maybe this is because some misunderstunding in CarPlay workflow?
1
0
398
Dec ’23
System pushing CPNowPlayingTemplate to Driving Task CarPlay app (crash)
Since iOS 17 is out I am getting crashes in my Driving Task CarPlay app. It is as if the System tried to push a CPNowPlayingTemplate to my app, and that template, according to the documentation, is not allowed for a Driving Task CarPlay app. I get the following error: Fatal Exception: NSInvalidArgumentException Unsupported object <CPNowPlayingTemplate: 0x283944c60> <identifier: 3195B357-D184-41BF-91CA-399C5810A8EA, userInfo: (null), tabTitle: (null), tabImage: (null), showsTabBadge: 0> passed to pushTemplate:animated:completion:. Allowed classes: {( CPInformationTemplate, CPListTemplate, CPAlertTemplate, CPActionSheetTemplate, CPTabBarTemplate, CPGridTemplate, CPPointOfInterestTemplate )} My app, from time to time, plays some sounds to warn the driver about issues in the road. Maybe that can trigger (in which cases?) the now playing template to be pushed to my app. Is this an iOS 17 bug? Is there a way to work around it? Thank you.
1
0
398
Nov ’23
Developing CarPlay Application for Emergency and Non-Emergency Services - Which Category and Template to Use?
I am currently working on an iOS application that provides a range of services, including both emergency services (e.g., fire, medical emergencies) and non-emergency services (e.g., patient transportation to hospitals). Now, I am looking to extend the functionality to CarPlay, and I have a few questions regarding the suitable category and template for CarPlay development. CarPlay Category: Considering the nature of our application which covers both emergency and non-emergency services, I'm wondering which CarPlay category is most appropriate for our use case. Should we go for the "Navigation" category or another category that aligns better with our service offerings? Our application requires users to register cases for emergency or non-emergency services, and we provide services exclusively for registered cases. Additionally, we have predefined limited locations for pick-up and drop-off. Given these considerations, would the "Navigation" category be feasible for our application on CarPlay, considering the need for location-based services and step-by-step navigation to predetermined destinations? CarPlay Template: I would like to know which CarPlay template would be best suited for our application. Are there specific templates optimized for emergency services or transportation services on CarPlay? If we choose the CarPlay Navigation category, the CPMapTemplate is available to render the custom map. However, for our CarPlay application, we plan to introduce additional features alongside map navigation. Specifically, we intend to set driver and crew member information within the CarPlay application. This includes vehicle details, crew member details, and shift timings for crew members. Our system assigns cases to a particular driver based on this information. The app flow we are considering involves using the CPTabBarTemplate, which includes 3-4 tabs for shift details, vehicle information, etc. One of the tabs will display the map for step-by-step navigation. We have reviewed the CarPlay Navigation programming guidelines, which mention that on the base view, only the map can be rendered, and other UI elements cannot be displayed. However, in our case, the root template is CPTabBarTemplate rather than the CPMapTemplate. I am wondering if this approach could potentially create any issues during the Apple App Store approval process? Our primary concern stems from our initial belief that the Navigation category, with its extensive support for built-in templates, would allow us to implement a TabBar. Our intention was to incorporate the CPMapTemplate within one of the tab items. However, this approach seems to contradict the CarPlay Navigation programming guidelines. Step-by-Step Navigation: For the non-emergency services, specifically patient transportation, we need to provide step-by-step navigation for drivers while picking up and dropping off patients at nearby locations or hospitals. Are there specific CarPlay features or APIs that facilitate seamless step-by-step navigation within the CarPlay interface? Must-Have Features: In the context of CarPlay development for emergency and non-emergency services, are there any must-have features or guidelines that we should consider integrating into our CarPlay interface, especially for step-by-step navigation during patient transport? I appreciate any insights, experiences, or recommendations from developers who have worked on similar projects or have expertise in CarPlay development. Thank you!
0
0
320
Nov ’23
CarPlay - Get CPSessionConfiguration on app launch
Greetings, I would like to know if the CPSessionConfiguration limitedUserInterfaces on app launch. Currently I'm able to read that value when the toggle the limit ui option on the CarPlay simulator. But, if i have it on, and try to read sessionConfiguration?.limitedUserInterfaces it doesn't show me the correct value. I'm using the delegate, as per the documents, and its working just fine when I have the app open and toggle the UI, the only issue is if the UI toggle is on, and i launch the app im not able to get the correct value. Would appreciate any input. Thank you! code: func templateApplicationScene(_ templateApplicationScene: CPTemplateApplicationScene, didConnect interfaceController: CPInterfaceController) { self.interfaceController = interfaceController self.scene = templateApplicationScene self.sessionConfiguration = CPSessionConfiguration(delegate: self) print(sessionConfiguration?.limitedUserInterfaces == .keyboard) // prints false when ui toggle is on
0
0
374
Nov ’23
A CarPlay template using Siri to let the user choose between several actions?
I'm developing a CarPlay interface to a messaging application but couldn't find how the root CPTemplate, a grid template with button in my case, could activate SiriKit to let the user choose between several actions like we could see in WhatsApp running on CarPlay: There is CPVoiceControlTemplate that seems to do the job but it is only allowed for navigation app category and not messaging and VoIP. Actually my app could activate Siri to compose a message to a selected contact represented by a CPMessageListItem in a CPListTemplate but I couldn't find how to code a CPGridTemplate that activate Siri...
1
0
483
Nov ’23
CarPlay Simulator for Xcode 13.4 not working
Hi, I installed a few versions of Additional Tools for Xcode. I was interested the most in the CarPlay Simulator. I installed the Tools for Xcode 15 - they do not work because of my version of macOS (11.7.4). So I went with the earliest and the latest version of those tools for Xcode 14. They didn't work because I have an Intel machine. I tried the earliest ones for Xcode 13 - they didn't work but I assumed that it could be something to do with the Beta version of the CarPlay Sim (labeled as Beta). I installed the latest version for Xcode 13, labeled as for Xcode 13.4. I tried 3 different devices. iPhone 11 running iOS 17.0.2, iPhone 6s running a version of iOS 15 and an iPhone 13 running some version of iOS 16. All 3 of them connect normally to a CarPlay equipped infotainment system (Discover Media, MIB 3 in a 2021 Volkswagen Caddy). The phones connect to the car both wired and wireless flawlessly, but I cannot connect them to the carplay sim. None devices run any non-finished, unreleased app. The CarPlay Sim recognizes all 3, but in the devices tab the dot is red. I tried turning off personal hotspot, clicking the device name in the devices tab, multiple lightning cables and multiple versions of the CarPlay Simulator. Nothing will work, all 3 phones show "Accesory Not Supported - Your phone does not support this accesory". All cables are MFI certified. All of them are USB-A because my computer is pre-USB-C era. What can possibly be wrong, what can I do?
0
1
471
Nov ’23
CarPlay: dashboardInstructionVariants does not work.
We are creating an app for turn-by-turn navigation in CarPlay. I would like to change the information displayed during navigation between Dashboard and others. I understand from Apple's documentation that this can be achieved by giving strings for both dashboardInstructionVariants and instructionVariants. However, when I actually try it, only the instructionVariants string is displayed. Is this a bug?
0
0
242
Nov ’23
CarPlay support for SwiftUI app
I'm having troubles adding CarPlay support to my SwiftUI app. I have added the proper entitlements, scene configurations, and template delegate for CarPlay. It's unfortunately not showing up in the CarPlay simulator on Xcode 15. Am I missing something simple? CarPlay Scene Delegate class CarPlaySceneDelegate: NSObject, CPTemplateApplicationSceneDelegate {} Info.plist <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).CarPlaySceneDelegate</string> </dict> </array> </dict> Entitlements <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.developer.carplay-audio</key> <true/> </dict> </plist>
1
0
605
Nov ’23
CarPlay tab bar issues
Adding CPTabBarTemplate to my Root Template seems to break CPListTemplate, it ends up highlighting the second indexed value. I'm unable to figure out what's causing this issue. Removing the tab bar does fix the issue but I need to use tabs. Any help would be greatly appreciated! func templateApplicationScene(_ templateApplicationScene: CPTemplateApplicationScene, didConnect interfaceController: CPInterfaceController) { self.interfaceController = interfaceController let listTemplate = CPListTemplate(title: "List", sections: []) listTemplate.tabImage = UIImage(systemName: "person.crop.rectangle.stack.fill") let settingsTemplate = CPListTemplate(title: "Settings", sections: []) settingsTemplate.tabImage = UIImage(systemName: "gear") let tabBarTemplate = CPTabBarTemplate(templates: [listTemplate, settingsTemplate]) interfaceController.setRootTemplate(tabBarTemplate, animated: true, completion: nil) }
4
0
756
Nov ’23
CarPlay + SwiftUI update doesn't work
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) } }
2
2
689
Jan ’24