Skip to content

Releases: mapbox/mapbox-navigation-ios

v1.1.0

12 Nov 19:22
Compare
Choose a tag to compare

Changes since v1.0.0:

Packaging

  • MapboxNavigationNative dependency was updated to v22.0.5 and MapboxCommon to v7.1.2. (#2648)

User location

  • Fixed issues which was causing unsmooth user puck updates on iOS and inability to zoom-in to current location at the start of navigation on CarPlay by updating to Mapbox Maps SDK for iOS v6.2.2. (#2699)
  • Added the NavigationServiceDelegate.navigationService(_:didChangeAuthorizationFor:) method and Notification.Name.locationAuthorizationDidChange to detect when the user changes the Location Services permissions for the current application, including for approximate location on iOS 14. (#2693)
  • When approximate location is enabled on iOS 14, a banner appears reminding the user to disable approximate location to continue navigating. (#2693)

Other changes

  • RouteProgress, RouteLegProgress, and RouteStepProgress now conform to the Codable protocol. (#2615)
  • Fixed an issue where NavigationMapView redrew at a low frame rate even when the device was plugged in. (#2643)
  • Fixed an issue where the route line flickered when refreshing. (#2642)
  • Fixed an issue where the End of route view UI is broken prior to iOS 11. (#2690)
  • Fixed an issue where completed waypoints remained on map after rerouting. (#2378)
  • Fixed an issue where positioning icon was not highlighted on CarPlay when using iOS 14.0. (#2681)
  • Fixed an issue where ETA label font was too small during turn-by-turn navigation. (#2679)
  • Fixed an issue with NavigationMapViewDelegate.navigationMapView(_:shapeFor:) and NavigationMapViewDelegate.navigationMapView(_:simplifiedShapeFor:) methods were not correctly called for route shape customization (#2623)
  • Fixed an issue where the banner indicating simulation mode displayed a very large speed factor in the Hebrew location. (#2714)
  • Fixed an issue where incorrect speed multiplier value was shown after arriving to the intermediate waypoint. (#2710)

Documentation is available online or within Xcode.

v1.1.0-rc.1

10 Nov 00:15
Compare
Choose a tag to compare
v1.1.0-rc.1 Pre-release
Pre-release

Changes since v1.1.0-beta.2:

User location

  • Added the NavigationServiceDelegate.navigationService(_:didChangeAuthorizationFor:) method and Notification.Name.locationAuthorizationDidChange to detect when the user changes the Location Services permissions for the current application, including for approximate location on iOS 14. (#2693)
  • When approximate location is enabled on iOS 14, a banner appears reminding the user to disable approximate location to continue navigating. (#2693)

User interface

  • Fixed an issue where completed waypoints remained on map after rerouting. (#2378)
  • Fixed an issue where positioning icon was not highlighted on CarPlay when using iOS 14.0. (#2681)
  • Fixed an issue where ETA label font was too small during turn-by-turn navigation. (#2679)
  • Fixed an issue with NavigationMapViewDelegate.navigationMapView(_:shapeFor:) and NavigationMapViewDelegate.navigationMapView(_:simplifiedShapeFor:) methods were not correctly called for route shape customization (#2623)
  • Fixed an issue where the banner indicating simulation mode displayed a very large speed factor in the Hebrew location. (#2714)
  • Fixed an issue where incorrect speed multiplier value was shown after arriving to the intermediate waypoint. (#2710)

Other changes

  • Removed the offline service feature that was introduced in v1.1.0-beta.2. (#2712)

Documentation is available online or within Xcode.

v1.1.0-beta.2

22 Oct 22:47
89f6cf5
Compare
Choose a tag to compare
v1.1.0-beta.2 Pre-release
Pre-release

Changes since v1.1.0-beta.1:

  • MapboxNavigationNative dependency was updated to v22.0.5 and MapboxCommon to v7.1.2. (#2648)
  • Added Offline Service support for Maps and Navigation. To allow Mapbox Maps SDK to pick up downloaded regions, OfflineService has to be instantiated prior to MGLMapView. In case of offline navigation MapboxNavigationService and PassiveLocationDataSource has to contain tilesVersion parameter of downloaded Navigation region. Undeprecated NavigationDirections, OfflineRouteCompletionHandler and NavigationDirections.calculate(_:offline:completionHandler:) and introduced NavigationDirections.configureRouter(tilesVersion:) to be able to request route in offline. (#2653)
  • Fixed an issue where the End of route view UI is broken prior to iOS 11. (#2690)
  • Fixed an issue where completed waypoints remained on map after rerouting. (#2378)
  • Fixed an issue where positioning icon was not highlighted on CarPlay when using iOS 14.0. (#2681)

Documentation is available online or within Xcode.

v1.1.0-beta.1

08 Oct 23:17
750d2bc
Compare
Choose a tag to compare
v1.1.0-beta.1 Pre-release
Pre-release

Changes since v1.1.0-alpha.2, including changes in v1.0.0 since v1.0.0-rc.5:

  • Fixed a linker error in Xcode 12 when using CocoaPods. (#2662)
  • Fixed a crash on iOS 14 when starting a trip while connected to CarPlay. (#2670)
  • Fixed an issue where the user puck stuttered on iOS 14. (#2659)
  • Fixed an issue where the user puck appeared in the upper-left corner when initially showing a NavigationMapView. (#2669)
  • Fixed an issue where the route line overlapped labels and shields if MGLPolylines or MGLPolygons had been added to a NavigationMapView as annotations beforehand. (#2661)

Documentation is available online or within Xcode.

v1.0.0

02 Oct 00:06
Compare
Choose a tag to compare

Changes since v0.40.0:

Packaging

  • 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 guide. (#2405)
  • Carthage v0.35 or above is now required for installing this SDK if you use Carthage. (81a36d0)
  • MapboxNavigation depends on Mapbox Maps SDK for iOS v6.0.0, and MapboxCoreNavigation depends on builds of MapboxNavigationNative and MapboxCommon that require authentication. Before CocoaPods or Carthage can download Mapbox.framework, MapboxNavigationNative.framework, and MapboxCommon.framework, you need to create a special-purpose access token. See the updated installation instructions in the readme for more details. (#2437, #2477)
  • If you install this SDK using Carthage, you need to also add MapboxCommon.framework to your application target’s Embed Frameworks build phase. (#2477)
  • Xcode 11.4.1 or above is now required for building this SDK from source. (#2417)
  • Added Greek and Turkish localizations. (#2385, #2475)
  • Upgraded to MapboxDirections v1.0.0, MapboxSpeech v1.0.0, and Turf v1.0.0. (#2646)

Map

  • The MGLStyle.navigationDayStyleURL and MGLStyle.navigationNightStyleURL properties contain URLs to the Mapbox Navigation Day and Night v1 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. (#2523)
  • A portion of the route line now disappears behind the user puck as the user travels along the route during turn-by-turn navigation if NavigationViewController.routeLineTracksTraversal is set to true. (#2377)
  • Ability to hide the route line behind the user puck on CarPlay can be enabled by setting CarPlayNavigationViewController.routeLineTracksTraversal to true. (#2601)
  • Traffic congestion segments along the route line and the estimated arrival time periodically update to reflect current conditions when using the DirectionsProfileIdentifier.automobileAvoidingTraffic profile. These updates correspond to the new Notification.Name.routeControllerDidRefreshRoute notification, NavigationServiceDelegate.navigationService(_:didRefresh:) method, and NavigationViewControllerDelegate.navigationViewController(_:didRefresh:) method. To disable these updates, set RouteOptions.refreshingEnabled to false. (#2366)
  • A building at the destination waypoint can be extruded in 3D and highlighted for emphasis and recognizability. To enable building extrusion or highlighting, set the NavigationViewController.waypointStyle property. For a standalone map view that is not part of NavigationViewController, call the NavigationMapView.highlightBuildings(at:in3D:) method to highlight the destination building at a specific coordinate and NavigationMapView.unhighlightBuildings() to reverse this effect. (#2535)
  • Replaced the MGLStyle.navigationPreviewDayStyleURL and MGLStyle.navigationGuidanceDayStyleURL properties with MGLStyle.navigationDayStyleURL, and replaced MGLStyle.navigationPreviewNightStyleURL and MGLStyle.navigationGuidanceNightStyleURL with MGLStyle.navigationNightStyleURL. (#2523)
  • Replaced the MGLStyle.navigationGuidanceDayStyleURL(version:) and MGLStyle.navigationGuidanceNightStyleURL(version:) methods with MGLStyle.navigationDayStyleURL(version:) and MGLStyle.navigationNightStyleURL(version:) respectively, removed the MGLStyle.navigationPreviewDayStyleURL(version:) and MGLStyle.navigationPreviewNightStyleURL(version:) methods. (#2567)
  • Removed the NavigationViewControllerDelegate.navigationViewController(_:imageFor:) and NavigationViewControllerDelegate.navigationViewController(_:viewFor:) methods in favor of MGLMapViewDelegate.mapView(_:imageFor:) and MGLMapViewDelegate.mapView(_:viewFor:), respectively. (#2396)
  • Removed NavigationMapViewDelegate.navigationMapView(_:routeStyleLayerWithIdentifier:source:), NavigationMapViewDelegate.navigationMapView(_:routeCasingStyleLayerWithIdentifier:source:) in favor of four new delegate methods to customize the route styling (#2377):
    • NavigationMapViewDelegate.navigationMapView(_:mainRouteStyleLayerWithIdentifier:source:) to style the main route.
    • NavigationMapViewDelegate.navigationMapView(_:mainRouteCasingStyleLayerWithIdentifier:source:) to style the casing of the main route.
    • NavigationMapViewDelegate.navigationMapView(_:alternativeRouteStyleLayerWithIdentifier:source:) to style alternative routes.
    • NavigationMapViewDelegate.navigationMapView(_:alternativeRouteCasingStyleLayerWithIdentifier:source:) to style the casing of alternative routes.
  • Removed the deprecated NavigationMapView.showRoutes(_:legIndex:) method in favor of NavigationMapView.show(_:legIndex:) and NavigationMapView.showWaypoints(_:legIndex:) in favor of NavigationMapView.showWaypoints(on:legIndex:). (#2539)
  • Fixed an issue where the casing for the main route would not overlap alternative routes. (#2377)
  • Fixed memory leaks after disconnecting the application from CarPlay. (#2470)
  • Fixed issue which was causing incorrect alignment of MGLMapView.attributionButton and MGLMapView.logoView. (#2613)

Visual and spoken instructions

  • As the user approaches certain junctions, an enlarged illustration of the junction appears below the top banner to help the user understand a complex maneuver. These junction views only appear when the relevant data is available. Contact your Mapbox sales representative or support team for access to the junction views feature. (#2408)
  • 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. (#2348)
  • Added an alternative presentation for maneuver instructions that resembles swipeable user notification cards. To replace the conventional TopBannerViewController presentation with the cardlike presentation, create an instance of InstructionsCardViewController and pass it into the NavigationOptions(styles:navigationService:voiceController:topBanner:bottomBanner:) method. (#2149, #2296, #2627)

Feedback

  • The user can optionally provide more detailed feedback during turn-by-turn navigation. After tapping the feedback button and selecting a feedback type, the user is taken to a second screen for selecting from among multiple subtypes. Set the FeedbackViewController.detailedFeedbackEnabled property to true to enable two-step feedback. (#2544)
  • Reorganized FeedbackType cases (#2419):
    • 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:).
    • Added FeedbackType.incorrectVisual(subtype:), FeedbackType.routeQuality(subtype:), and FeedbackType.positioning(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.
  • FeedbackViewController no longer dismisses automatically after 10 seconds. (#2420)
  • Refreshed the feedback type icons. (#2419, #2421)
  • Fixed warnings in Interface Builder that prevented styling of UI components in EndOfRouteViewController. (#2518)

User location

  • Improved the accuracy of location tracking and off-route detection. (#2319)
  • Added the PassiveLocationManager class for use with the MGLMapView.locationManager property. Unlike CLLocationManager, this class causes the map view to display user locations snapped to the road network, just like during turn-by-turn navigation. To receive these locations without an MGLMapView, use the PassiveLocationDataSource class and implement the PassiveLocationDataSourceDelegate.passiveLocationDataSource(_:didUpdateLocation:rawLocation:) method or observe Notification.Name.passiveLocationDataSourceDidUpdate notifications. (#2410)
  • 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. (#2366)
  • The following methods now require a route index to be passed in as an argumen...
Read more

v1.1.0-alpha.2

25 Sep 19:08
Compare
Choose a tag to compare
v1.1.0-alpha.2 Pre-release
Pre-release

Changes since v1.1.0-alpha.1, including changes in v1.0.0-rc.3 through v1.0.0-rc.5:

Packaging

Map

  • 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. (#2523)
  • Traffic congestion segments along the route line and the estimated arrival time periodically update to reflect current conditions when using the DirectionsProfileIdentifier.automobileAvoidingTraffic profile. These updates correspond to the new Notification.Name.routeControllerDidRefreshRoute notification, NavigationServiceDelegate.navigationService(_:didRefresh:) method, and NavigationViewControllerDelegate.navigationViewController(_:didRefresh:) method. To disable these updates, set RouteOptions.refreshingEnabled to false. (#2366)
  • The route line now displays accurate and consistent traffic congestion segments. (#2580)
  • Renamed the NavigationMapView.routeLineTracksTraversal property to NavigationViewController.routeLineTracksTraversal and added the NavigationMapView.updateRoute(_:) method for standalone map views. (#2581)
  • Added the CarPlayNavigationViewController.routeLineTracksTraversal property to hide portions of the route line that the user has already passed. (#2601)
  • Fixed an issue where NavigationMapView redrew at a low frame rate even when the device was plugged in. (#2643)
  • Fixed incorrect alignment of MGLMapView.attributionButton and MGLMapView.logoView. (#2613)
  • Improved building highlighting for several edge cases (e.g., if the destination is within the threshold distance). (#2612)
  • Fixed an issue where the route line flickered when refreshing. (#2642)

Visual instructions

  • Added an alternative presentation for maneuver instructions that resembles swipeable user notification cards. To replace the conventional TopBannerViewController presentation with the cardlike presentation, create an instance of InstructionsCardViewController and pass it into the NavigationOptions(styles:navigationService:voiceController:topBanner:bottomBanner:) method. (#2149, #2296, #2627)
  • Fixed a NextBannerView layout issue that occurred when two maneuvers were spaced close together. (#2607)

User location

  • RouteProgress, RouteLegProgress, and RouteStepProgress now conform to the Codable protocol. (#2615)
  • Added the PassiveLocationDataSourceDelegate.passiveLocationDataSourceDidChangeAuthorization(_:) method. (#2649)
  • Fixed a crash when installing a PassiveLocationManager as an MGLMapView’s location manager on iOS 14 when Mapbox Maps SDK for iOS 6.2 is installed. (#2649)
  • Speculatively fixed a crash when installing a PassiveLocationManager as an MGLMapView’s location manager. (#2633)
  • Fixed an issue where calls to RouteController.location could sometimes cause undefined behavior, including skipping instructions. (#2610)
  • The RouteProgress.congestionTravelTimesSegmentsByStep and RouteProgress.congestionTimesPerStep properties are now read-only. (#2624)

Other changes

  • Fixed an issue where EndOfRouteViewController was incorrectly positioned after changing the device’s orientation. (#2590)
  • Added a “Positioning” category to the feedback view controller. (#2621)

Known issues

  • Carthage is unable to build some dependencies of this SDK using an Xcode 12 toolchain. As a workaround, downgrade to Xcode 11 or use this script instead of invoking carthage directly. (Carthage/Carthage#3019)
  • A crash occurs on launch in the iPhone 5 simulator. As a workaround, build and debug your application on an iPhone 5 device instead.
  • The ETA label is too small. (#2645)
  • The rating stars in the end-of-route feedback panel are cut off on iOS 10. (#2637)
  • The categories in the feedback view controller have not been translated into many of the supported languages. (You can help!)

Documentation is available online or within Xcode.

v1.0.0-rc.5

23 Sep 06:44
Compare
Choose a tag to compare
v1.0.0-rc.5 Pre-release
Pre-release

Changes since v1.0.0-rc.4:

User interface

  • Added an alternative presentation for maneuver instructions that resembles swipeable user notification cards. To replace the conventional TopBannerViewController presentation with the cardlike presentation, create an instance of InstructionsCardViewController and pass it into the NavigationOptions(styles:navigationService:voiceController:topBanner:bottomBanner:) method. (#2149, #2296, #2627)
  • Added a “Positioning” category to the feedback view controller. (#2621)
  • Updated various translations. (#2644)

User location

  • Added the PassiveLocationDataSourceDelegate.passiveLocationDataSourceDidChangeAuthorization(_:) method. (#2649)
  • Fixed a crash when installing a PassiveLocationManager as an MGLMapView’s location manager on iOS 14 when Mapbox Maps SDK for iOS 6.2 is installed. (#2649)
  • Speculatively fixed a crash when installing a PassiveLocationManager as an MGLMapView’s location manager. (#2633)
  • The RouteProgress.congestionTravelTimesSegmentsByStep and RouteProgress.congestionTimesPerStep properties are now read-only. (#2624)

Known issues

  • Carthage is unable to build some dependencies of this SDK using an Xcode 12 toolchain. As a workaround, downgrade to Xcode 11 or use this script instead of invoking carthage directly. (Carthage/Carthage#3019)
  • A crash occurs on launch in the iPhone 5 simulator. As a workaround, build and debug your application on an iPhone 5 device instead.
  • The ETA label is too small. (#2645)
  • The rating stars in the end-of-route feedback panel are cut off on iOS 10. (#2637)
  • The categories in the feedback view controller have not been translated into many of the supported languages. (You can help!)
  • The route line flickers when refreshing. (#2602)

Documentation is available online or within Xcode.

v1.0.0-rc.4

11 Sep 21:39
Compare
Choose a tag to compare
v1.0.0-rc.4 Pre-release
Pre-release

Changes since v1.0.0-rc.3:

  • Made timestamps consumed by Navigator.getStatus consistent. (#2610)
  • Fixed issue which was causing incorrect alignment of MGLMapView.attributionButton and MGLMapView.logoView. (#2613)
  • Updated German and Vietnamese translations. (#2616)
  • Improved alignment of instruction cards after device rotation. (#2614)
  • Improved building highlighting for several edge cases (e.g. in case if destination is within threshold distance). (#2612)
  • Fixed NextBannerView presentation in case of very closely spaced maneuvers. (#2607)
  • Added ability to switch on/off vanishing route line when using CarPlay. (#2601)

Known issues:

  • Route refresh is causing vanishing route line flickering. (#2602)

Documentation is available online or within Xcode.

v1.0.0-rc.3

04 Sep 07:05
Compare
Choose a tag to compare
v1.0.0-rc.3 Pre-release
Pre-release

Changes since v1.0.0-rc.2:

  • Traffic congestion segments along the route line and the estimated arrival time periodically update to reflect current conditions when using the DirectionsProfileIdentifier.automobileAvoidingTraffic profile. These updates correspond to the new Notification.Name.routeControllerDidRefreshRoute notification, NavigationServiceDelegate.navigationService(_:didRefresh:) method, and NavigationViewControllerDelegate.navigationViewController(_:didRefresh:) method. To disable these updates, set RouteOptions.refreshingEnabled to false. (#2366)
  • The route line now displays accurate and consistent traffic congestion segments. (#2580)
  • The NavigationMapView.routeLineTracksTraversal property is now in NavigationViewController.routeLineTracksTraversal, NavigationMapView.updateRoute(_:) is now publicly available. (#2581)
  • EndOfRouteViewController is now correctly positioned after changing device orientation. (#2590)
  • Production ready Navigation Day and Night Style URLs are used. (#2586)
  • Second Level Feedback strings are now localizable. (#2576)

Known issues:

  • The route line is always vanishing when using CarPlay. (#2600)
  • Route refresh is causing vanishing route line flickering. (#2602)

Documentation is available online or within Xcode.

v1.1.0-alpha.1

28 Aug 23:12
ebab7d0
Compare
Choose a tag to compare
v1.1.0-alpha.1 Pre-release
Pre-release

Changes since v1.0.0-rc.2:

Documentation is available online or within Xcode.