Skip to content

Upgrading from v0.40.x to v1.0.x

Minh Nguyễn edited this page Oct 27, 2020 · 9 revisions

Mapbox Navigation SDK for iOS v1.0.0 is the first major version of this SDK since the project started in 2016. To upgrade, follow the installation instructions. Note the new installation steps, including creating a secret Mapbox access token and adding it to a .netrc file.

Version 1.0.0 includes numerous important changes to the public APIs of the MapboxNavigation and MapboxCoreNavigation frameworks as well as their dependencies. There are several backwards-incompatible changes to be aware of as you upgrade, which are discussed below and divided by framework so that you can upgrade different portions of your application at different times.

System requirements

  • Minimum Carthage version required to install the SDK (if using Carthage): 0.35
  • Minimum Xcode version required to build the SDK: 11.4.1
  • Minimum iOS deployment target: 10.0

Upgrading Turf from v0.3.0 to v0.5.0

  • CoordinateBounds class was replaced by BoundingBox.
  • Polyline is replaced with LineString.
  • Review existing Polyline.closestCoordinate(to:) and other LineString.IndexedCoordinate usage as its .distance property now reflects it's description. Previously, Polyline.closestCoordinate(to:) showed distance between provided coordinate and the closest Polyline point. Now, it shows distance from Polyline's first point, as stated in the doc.

Upgrading MapboxDirections from v0.31.0 to v0.33.0

Number of entities was renamed or replaced:

  • Tracepoint.alternateCount renamed to Tracepoint.countOfAlternatives.
  • MBDefaultWalkingSpeed replaced by CLLocationSpeed.normalWalking
  • MBMinimumWalkingSpeed replaced by CLLocationSpeed.minimumWalking
  • MBMaximumWalkingSpeed replaced by CLLocationSpeed.maximumWalking
  • Route.coordinates replaced by Route.shape
  • RouteStep.coordinates replaced by RouteStep.shape
  • Route.coordinateCount and RouteStep.coordinateCount properties have been removed, use LineString.coordinates instead.

Other changes:

  • TransportType.none, ManeuverType.none, and ManeuverDirection.none are removed. To handle those cases, add catching decoding error.
  • Removed the Lane class in favor of storing an array of LaneIndications directly in the Intersection.approachLanes property.
  • Removed the ComponentRepresentable protocol, VisualInstructionComponent class, and LaneIndicationComponent class in favor of a VisualInstruction.Component enumeration that contains a VisualInstruction.Component.TextRepresentation and/or VisualInstruction.Component.ImageRepresentation, depending on the type of component.
  • The RouteCompletionHandler and MatchCompletionHandler closures’ error argument is now a DirectionsError instead of an NSError. Update callbacks accordingly.
  • Classes such as Route, Match, and RouteStep conform to the Codable protocol. If you had your own implementation, remove it.

Upgrading MapboxNavigation from v0.40.0 to v1.0.0

By default, usage of Mapbox APIs is now billed together based on monthly active users rather than individually by HTTP request. Learn more in the pricing by product documentation.

Symbols renamed or replaced:

  • The MGLStyle.navigationDayStyleURL and MGLStyle.navigationNightStyleURL properties contain URLs to the Mapbox Navigation Day and Night v5 styles, both of which show traffic congestion lines on all roads by default. The traffic congestion layer is appropriate for a preview map; to tailor the style to turn-by-turn navigation, set MGLMapView.showsTraffic to false.
  • Replaced the MGLStyle.navigationPreviewDayStyleURL and MGLStyle.navigationGuidanceDayStyleURL properties with MGLStyle.navigationDayStyleURL, and replaced MGLStyle.navigationPreviewNightStyleURL and MGLStyle.navigationGuidanceNightStyleURL with MGLStyle.navigationNightStyleURL.
  • Removed NavigationMapViewDelegate.navigationMapView(_:routeStyleLayerWithIdentifier:source:), NavigationMapViewDelegate.navigationMapView(_:routeCasingStyleLayerWithIdentifier:source:) in favor of four new delegate methods to customize the route styling.
  • Removed the NavigationViewControllerDelegate.navigationViewController(_:imageFor:) and NavigationViewControllerDelegate.navigationViewController(_:viewFor:) methods in favor of MGLMapViewDelegate.mapView(_:imageFor:) and MGLMapViewDelegate.mapView(_:viewFor:), respectively.
  • Deprecated NavigationMapView.showRoutes(_:, legIndex:) and NavigationMapView.showWaypoints(_:legIndex:) methods. Use NavigationMapView.show(_:, legIndex:) and NavigationMapView.showWaypoints(on:legIndex:) instead.
  • The following methods now require a route index to be passed in as an argument:
    • NavigationViewController(for:routeIndex:routeOptions:navigationOptions:)
    • NavigationViewController(route:routeIndex:routeOptions:navigationService:)
    • CarPlayManagerDelegate.carPlayManager(_:navigationServiceAlong:routeIndex:routeOptions:desiredSimulationMode:)
    • MapboxNavigationService(route:routeIndex:routeOptions:)
    • MapboxNavigationService(route:routeIndex:routeOptions:directions:locationSource:eventsManagerType:simulating:routerType:)
    • RouteProgress(route:routeIndex:options:legIndex:spokenInstructionIndex:)
    • RouteProgress(route:routeIndex:options:legIndex:spokenInstructionIndex:)
    • Router(along:routeIndex:options:directions:dataSource:)
    • RouteController(along:routeIndex:options:directions:dataSource:)
  • The NavigationViewController.route and NavigationService.route properties are now read-only. To change the route that the user is traveling along, set the NavigationViewController.indexedRoute or NavigationService.indexedRoute property instead, pairing the route with the index of the route in the original RouteResponse object.
  • Replaced RouteVoiceController and MapboxVoiceController with MultiplexedSpeechSynthesizer. MultiplexedSpeechSynthesizer coordinates multiple cascading speech synthesizers. By default, the controller still tries to speak instructions via the Mapbox Voice API (MapboxSpeechSynthesizer) before falling back to VoiceOver (SystemSpeechSynthesizer), but you can also provide your own speech synthesizer that conforms to the SpeechSynthesizing protocol.
  • Deprecated NavigationDirectionsCompletionHandler, OfflineRoutingError, UnpackProgressHandler, UnpackCompletionHandler, OfflineRouteCompletionHandler, and NavigationDirections. Use Directions instead of NavigationDirections to calculate a route.
  • Reorganized FeedbackType cases:
    • Removed FeedbackType.accident, FeedbackType.hazard, FeedbackType.reportTraffic, and FeedbackType.mapIssue.
    • Renamed FeedbackType.roadClosed and FeedbackType.notAllowed to FeedbackType.roadClosure(subtype:) and FeedbackType.illegalRoute(subtype:), respectively.
    • Renamed FeedbackType.routingError to FeedbackType.routeQuality(subtype:).
    • Renamed FeedbackType.confusingInstruction to FeedbackType.confusingAudio(subtype:).
    • FeedbackType.missingRoad is now represented as FeedbackType.routeQuality(subtype:) with a subtype of RouteQualitySubtype.routeIncludedMissingRoads.
    • FeedbackType.missingExit is now represented as FeedbackType.incorrectVisual(subtype:) with a subtype of IncorrectVisualSubtype.exitInfoIncorrect.
  • The RouteProgress.congestionTravelTimesSegmentsByStep and RouteProgress.congestionTimesPerStep properties are now read-only.

Other changes:

  • The MGLStyle.navigationDayStyleURL and MGLStyle.navigationNightStyleURL properties contain URLs to the Mapbox Navigation Day and Night v5 styles, both of which show traffic congestion lines on all roads by default. The traffic congestion layer is appropriate for a preview map; to tailor the style to turn-by-turn navigation, set MGLMapView.showsTraffic to false.
  • Any classes, methods, or properties that were deprecated in v0.40.0 are no longer available. See your project’s build errors for details about replacements.

If you have any questions, please contact Mapbox’s support team.