CarPlayManagerDelegate
@available(iOS 12.0, *)
public protocol CarPlayManagerDelegate : AnyObject, UnimplementedLogging
CarPlayManagerDelegate is the main integration point for Mapbox CarPlay support.
Implement this protocol and assign an instance to the delegate property of the shared instance of CarPlayManager.
If no delegate is set, a default built-in MapboxNavigationService will be created and used when a trip begins.
-
carPlayManager(_:leadingNavigationBarButtonsCompatibleWith:in:for:)Default implementationOffers the delegate an opportunity to provide a customized list of leading bar buttons at the root of the template stack for the given activity.
These buttons’ tap handlers encapsulate the action to be taken, so it is up to the developer to ensure the hierarchy of templates is adequately navigable.
Default Implementation
UnimplementedLoggingprints a warning to standard output the first time this method is called.Declaration
Swift
func carPlayManager(_ carPlayManager: CarPlayManager, leadingNavigationBarButtonsCompatibleWith traitCollection: UITraitCollection, in carPlayTemplate: CPTemplate, for activity: CarPlayActivity) -> [CPBarButton]?Parameters
carPlayManagerThe CarPlay manager instance.
traitCollectionThe trait collection of the view controller being shown in the CarPlay window.
carPlayTemplateThe template into which the returned bar buttons will be inserted.
activityWhat the user is currently doing on the CarPlay screen. Use this parameter to distinguish between multiple templates of the same kind, such as multiple
CPMapTemplates.Return Value
An array of bar buttons to display on the leading side of the navigation bar while
templateis visible. -
carPlayManager(_:trailingNavigationBarButtonsCompatibleWith:in:for:)Default implementationOffers the delegate an opportunity to provide a customized list of trailing bar buttons at the root of the template stack for the given activity.
These buttons’ tap handlers encapsulate the action to be taken, so it is up to the developer to ensure the hierarchy of templates is adequately navigable.
Default Implementation
UnimplementedLoggingprints a warning to standard output the first time this method is called.Declaration
Swift
func carPlayManager(_ carPlayManager: CarPlayManager, trailingNavigationBarButtonsCompatibleWith traitCollection: UITraitCollection, in carPlayTemplate: CPTemplate, for activity: CarPlayActivity) -> [CPBarButton]?Parameters
carPlayManagerThe CarPlay manager instance.
traitCollectionThe trait collection of the view controller being shown in the CarPlay window.
carPlayTemplateThe template into which the returned bar buttons will be inserted.
activityWhat the user is currently doing on the CarPlay screen. Use this parameter to distinguish between multiple templates of the same kind, such as multiple
CPMapTemplates.Return Value
An array of bar buttons to display on the trailing side of the navigation bar while
templateis visible. -
carPlayManager(_:mapButtonsCompatibleWith:in:for:)Default implementationOffers the delegate an opportunity to provide a customized list of buttons displayed on the map.
These buttons handle the gestures on the map view, so it is up to the developer to ensure the map template is interactive. If this method is not implemented, or if nil is returned, a default set of zoom and pan buttons declared in the
CarPlayMapViewControllerwill be provided.Default Implementation
UnimplementedLoggingprints a warning to standard output the first time this method is called.Declaration
Swift
func carPlayManager(_ carPlayManager: CarPlayManager, mapButtonsCompatibleWith traitCollection: UITraitCollection, in carPlayTemplate: CPTemplate, for activity: CarPlayActivity) -> [CPMapButton]?Parameters
carPlayManagerThe CarPlay manager instance.
traitCollectionThe trait collection of the view controller being shown in the CarPlay window.
carPlayTemplateThe template into which the returned map buttons will be inserted.
activityWhat the user is currently doing on the CarPlay screen. Use this parameter to distinguish between multiple templates of the same kind, such as multiple
CPMapTemplates.Return Value
An array of map buttons to display on the map while
templateis visible. -
Asks the delegate to provide a navigation service. In multi-screen applications this should be the same instance used to guide the user along the route on the phone.
Declaration
Swift
func carPlayManager(_ carPlayManager: CarPlayManager, navigationServiceAlong route: Route, routeIndex: Int, routeOptions: RouteOptions, desiredSimulationMode: SimulationMode) -> NavigationServiceParameters
carPlayManagerThe CarPlay manager instance.
routeThe route for which the returned route controller will manage location updates.
routeIndexThe index of the route within the original
RouteResponseobject.routeOptionsthe options that were specified for the route request.
desiredSimulationModeThe desired simulation mode to use.
Return Value
A navigation service that manages location updates along
route. -
carPlayManager(_:searchTemplate:updatedSearchText:completionHandler:)Default implementationOffers the delegate an opportunity to react to updates in the search text.
Postcondition
You must call
completionHandlerwithin this method.Default Implementation
UnimplementedLoggingprints a warning to standard output the first time this method is called.Declaration
Swift
func carPlayManager(_ carPlayManager: CarPlayManager, searchTemplate: CPSearchTemplate, updatedSearchText searchText: String, completionHandler: @escaping ([CPListItem]) -> Void)Parameters
carPlayManagerThe CarPlay manager instance.
searchTemplateThe search template currently accepting user input.
searchTextThe updated search text in
searchTemplate.completionHandlerCalled when the search is complete. Accepts a list of search results.
-
carPlayManager(_:searchTemplate:selectedResult:completionHandler:)Default implementationOffers the delegate an opportunity to react to selection of a search result.
Postcondition
You must call
completionHandlerwithin this method.Default Implementation
UnimplementedLoggingprints a warning to standard output the first time this method is called.Declaration
Swift
func carPlayManager(_ carPlayManager: CarPlayManager, searchTemplate: CPSearchTemplate, selectedResult item: CPListItem, completionHandler: @escaping () -> Void)Parameters
carPlayManagerThe CarPlay manager instance.
searchTemplateThe search template currently accepting user input.
itemThe search result the user has selected.
completionHandlerCalled when the delegate is done responding to the selection.
-
carPlayManager(_:didFailToFetchRouteBetween:options:error:)Default implementationCalled when the CarPlay manager fails to fetch a route.
Default Implementation
UnimplementedLoggingprints a warning to standard output the first time this method is called.Declaration
Swift
func carPlayManager(_ carPlayManager: CarPlayManager, didFailToFetchRouteBetween waypoints: [Waypoint]?, options: RouteOptions, error: DirectionsError) -> CPNavigationAlert?Parameters
carPlayManagerThe CarPlay manager instance.
waypointsthe waypoints for which a route could not be retrieved.
optionsThe route options that were attached to the route request.
errorThe error returned from the directions API.
Return Value
Optionally, a
CPNavigationAlertto present to the user. If this method returns an alert, the CarPlay manager will transition back to the map template and display the alert. If it returnsnil, the CarPlay manager will do nothing. -
carPlayManager(_:willPreview:)Default implementationOffers the delegate the opportunity to customize a trip before it is presented to the user to preview.
To customize the destination’s title, which is displayed when a route is selected, set the
MKMapItem.nameproperty of theCPTrip.destinationproperty. To add a subtitle, create a newMKMapItemwhoseMKPlacemarkhas theStreetkey in its address dictionary.Default Implementation
UnimplementedLoggingprints a warning to standard output the first time this method is called.Declaration
Swift
func carPlayManager(_ carPlayManager: CarPlayManager, willPreview trip: CPTrip) -> (CPTrip)Parameters
carPlayManagerThe CarPlay manager instance.
tripThe trip that will be previewed.
Return Value
The actual trip to be previewed. This can be the same trip or a new/alternate trip if desired.
-
carPlayManager(_:willPreview:with:)Default implementationOffers the delegate the opportunity to customize a trip preview text configuration for a given trip.
Default Implementation
UnimplementedLoggingprints a warning to standard output the first time this method is called.Declaration
Swift
func carPlayManager(_ carPlayManager: CarPlayManager, willPreview trip: CPTrip, with previewTextConfiguration: CPTripPreviewTextConfiguration) -> (CPTripPreviewTextConfiguration)Parameters
carPlayManagerThe CarPlay manager instance.
tripThe trip that will be previewed.
previewTextConfigurationThe trip preview text configuration that will be presented alongside the trip.
Return Value
The actual preview text configuration to be presented alongside the trip.
-
carPlayManager(_:selectedPreviewFor:using:)Default implementationOffers the delegate the opportunity to react to selection of a trip. Certain trips may have alternate route(s).
Default Implementation
UnimplementedLoggingprints a warning to standard output the first time this method is called.Declaration
Swift
func carPlayManager(_ carPlayManager: CarPlayManager, selectedPreviewFor trip: CPTrip, using routeChoice: CPRouteChoice)Parameters
carPlayManagerThe CarPlay manager instance.
tripThe trip to begin navigating along.
routeChoiceThe possible route for the chosen trip.
-
carPlayManager(_:didBeginNavigationWith:)Default implementationCalled when navigation begins so that the containing app can update accordingly.
Default Implementation
UnimplementedLoggingprints a warning to standard output the first time this method is called.Declaration
Swift
func carPlayManager(_ carPlayManager: CarPlayManager, didBeginNavigationWith service: NavigationService)Parameters
carPlayManagerThe CarPlay manager instance.
serviceThe navigation service that has begun managing location updates for a navigation session.
-
carPlayManagerDidEndNavigation(_:)Default implementationCalled when navigation ends so that the containing app can update accordingly.
Default Implementation
UnimplementedLoggingprints a warning to standard output the first time this method is called.Declaration
Swift
func carPlayManagerDidEndNavigation(_ carPlayManager: CarPlayManager)Parameters
carPlayManagerThe CarPlay manager instance.
-
carplayManagerShouldDisableIdleTimer(_:)Default implementationCalled when the carplay manager will disable the idle timer.
Implementing this method will allow developers to change whether idle timer is disabled when carplay is connected and the vice-versa when disconnected.
Default Implementation
UnimplementedLoggingprints a warning to standard output the first time this method is called.Declaration
Swift
func carplayManagerShouldDisableIdleTimer(_ carPlayManager: CarPlayManager) -> BoolParameters
carPlayManagerThe CarPlay manager instance.
Return Value
A Boolean value indicating whether to disable idle timer when carplay is connected and enable when disconnected.
-
carPlayManager(_:didPresent:)Default implementationCalled when the CarPlayManager presents a new CarPlayNavigationViewController upon start of a navigation session.
Implementing this method will allow developers to query or customize properties of the presented CarPlayNavigationViewController. For example, a developer may wish to perform custom map styling on the presented NavigationMapView.
Default Implementation
UnimplementedLoggingprints a warning to standard output the first time this method is called.Declaration
Swift
func carPlayManager(_ carPlayManager: CarPlayManager, didPresent navigationViewController: CarPlayNavigationViewController)Parameters
carPlayManagerThe CarPlay manager instance.
navigationViewControllerThe CarPlayNavigationViewController that was presented on the CarPlay display.
Install in Dash
CarPlayManagerDelegate Protocol Reference