Thanks for being a part of WWDC25!

How did we do? We’d love to know your thoughts on this year’s conference. Take the survey here

Use Siri to control parts of my CarPlay app

I am building a CarPlay navigation app and I would like it to be as hands free as possible.

I need a better understanding of how Siri can work with CarPlay and if the direction I need to go is using Intents or App Shortcuts.

My goal is to be able to have the user speak to Siri and do things like "open settings" or "zoom in map" and then call a func in my app to do what the user is asking.

Does CarPlay support this? Do I need to use App Intents or App Shortcuts or something else?

Answered by Frameworks Engineer in 837509022

This sounds like a job for Voice Control: https://support.apple.com/guide/iphone/use-voice-control-commands-with-carplay-ipha24839833/ios

Generally, Voice Control works for CarPlay template apps without you needing to make any changes. If you encounter parts of your app that do not work with voice control, for example custom image buttons, please file a feedback request to tell us more.

Accepted Answer

This sounds like a job for Voice Control: https://support.apple.com/guide/iphone/use-voice-control-commands-with-carplay-ipha24839833/ios

Generally, Voice Control works for CarPlay template apps without you needing to make any changes. If you encounter parts of your app that do not work with voice control, for example custom image buttons, please file a feedback request to tell us more.

Yes, just what I was looking for. Thank you. Question about this, I have a CPMapButton and added an accessiblityLabel but it does not seem to tap the button when I say "tap current location":

    lazy var currentLocationButton: CPMapButton = {
        
        let recenterButton = CPMapButton { [weak self] button in
            
            guard let self = self else { return }
            
            if let mapView = self.mapViewController?.mapView {
                
                mapView.setUserTrackingMode(.followWithCourse, animated: true, completionHandler: nil)
                
            }
            
        }

        recenterButton.accessibilityLabel = NSLocalizedString("Current Location", comment: "CarPlay: Current Location Button accessiblity")
        recenterButton.accessibilityHint = NSLocalizedString("Show the users current location on the map", comment: "CarPlay: Show current user location on the map")
        
        let bundle = Bundle.main
        recenterButton.image = UIImage(named: "carplay_locate", in: bundle, compatibleWith: traitCollection)
        return recenterButton
        
    }()
Use Siri to control parts of my CarPlay app
 
 
Q