Release Notes

Version 0.38.1 - 29/01/2024

General

Fixes

  • Updated routing default endpoint, which was incorrectly set in Guidance v2, making route calculations impossible for some customers.

Version 0.38.0 - 17/01/2024

General

Breaking changes

  • TomTomSDKNDSStoreUpdater.CompositeRegion.children property is now optional. Existing checks for CompositeRegion.children.isEmpty should be replaced with CompositeRegion.children == nil checks. An alternative when iterating over the children is to use an empty list in case of nil as follows: CompositeRegion.children ?? []

Fixes

  • Avoiding now downloading the same file more than once and send only one finished callback for each download.
  • Fixed: could not build module TomTomSDKBindingMapDisplayInternal.

Removals

  • Decommissioned the TomTom Legacy SDK.

Updates

  • Promoted the TomTomSDKCommon.TTUnitRatio to General Availability.

Known issues

An incorrect routing endpoint is set by default in Guidance v2, making route calculations impossible with version 0.38.0 for some customers. Potential problems include prompts for a valid API key, such as:

"Your API key is invalid." "Your API key does not support either the Routing API or the Routing API with Extended Guidance endpoints.".

Resolution of the issue involves upgrading SDK to version 0.39.1 or later.

Location

Breaking changes

  • Made the TomTomSDKLocationProvider.MatchedLocation.mapPosition as internal.
  • Renamed the TomTomSDKLocationProvider.MatchedLocation.positionID to TomTomSDKLocationProvider.MatchedLocation.id.

Map

Breaking changes

  • Promoted the Route API to GA.
  • Renamed the TomTomSDKMapDisplay.CameraOperatorRoadClass class to TomTomSDKMapDisplay. FollowCameraOperatorConfig.RoadClass.

New Features

  • Introduced TrafficVisualization in the Routing visualization module.

Updates

  • Aligned documentation in TomTomSDKMapDisplay.Camera before promotion to GA.
  • Introduced CameraTrackingMode.followNorthUp, CameraTrackingMode.followRouteDirection cases.
  • Updated camera properties for default follow route operators.

Breaking changes

  • TomTomSDKNavigationEngines.RouteProgressEngine.calculateProgress(navigationSnapshot:) has a return type change from RouteProgress to [UUID : RouteProgress].
  • Added a new framework TomTomSDKNDSStoreUpdater. Details:
    • Moved all of the TomTomSDKDataManagementOffline.NDSStore methods and the updatesEnabled property to TomTomSDKNDSStoreUpdater.NDSStoreUpdater. This was done to encapsulate the required functionalities better (so now the TomTomSDKDataManagementOffline module provides only read-only access to the NDS map, while the TomTomSDKNDSStoreUpdater is used only for the update functionality).
    • Moved all of the existing types related to the map updates from TomTomSDKDataManagementOffline to TomTomSDKNDSStoreUpdater.
    • Added the TomTomSDKDataManagementOffline.NDSMapUpdater protocol to allow the use of a custom NDS update implementation in the TomTom SDK.
    • Added the TomTomSDKDataManagementOffline.NDSMapContext protocol to group together the NDSStore and the associated updater.
    • Removed TomTomSDKDataManagementOffline.NDSStoreConfiguration.ndsStoreUpdateConfig. Manually instantiating TomTomSDKNDSStoreUpdater.NDSStoreUpdater instead of using the NDS map update functionality.
    • Changed the argument from ndsStore: NDSStore to ndsStoreUpdater: NDSStoreUpdater in CompositeRegionsUpdater.init.
    • Changed the argument from ndsStore: NDSStore to ndsMapContext: NDSMapContext in the following places:
      • TomTomSDKNavigationDataStoreHybrid.HybridNavigationDataStore.init
      • TomTomSDKNavigationHybrid.HybridTomTomNavigationFactory.Configuration.init
      • TomTomSDKNavigationOffline.OfflineTomTomNavigationFactory.Configuration.init
    • Protocol TomTomSDKDataManagement.MapDataStoreAccessSyncing now inherits AnyObject, so it's no longer possible to implement it on a struct (it has to be a class).
    • Removed the NDSStoreUpdateConfig.geopoliticalView. Using the NDSStoreConfiguration.geopoliticalView instead. NDSStoreUpdater will use the geopolitical view of the supplied NDSStore (which is constructed with the NDSStoreConfiguration).
  • Changed the parameter type for TomTomSDKDataManagement. MapDataStoreAccessSyncing.addObserver(_:) from TomTomSDKDataManagement.OnStoreAccessChangedObserver to TomTomSDKDataManagement.StoreAccessChangedObserver.
  • Changed the parameter type for TomTomSDKDataManagement. MapDataStoreAccessSyncing.releaseWriteAccess(_:) from TomTomSDKDataManagement.OnStoreAccessChangedObserver to TomTomSDKDataManagement.StoreAccessChangedObserver.
  • Changed the parameter type for TomTomSDKDataManagement. MapDataStoreAccessSyncing.removeObserver(_:) from TomTomSDKDataManagement.OnStoreAccessChangedObserver to TomTomSDKDataManagement.StoreAccessChangedObserver.
  • Changed the parameter type for TomTomSDKDataManagement. MapDataStoreAccessSyncing.requestWriteAccess(_:) from TomTomSDKDataManagement.OnStoreAccessChangedObserver to TomTomSDKDataManagement.StoreAccessChangedObserver.
  • Marked as internal and renamed MapDataStoreAccess to StoreAccess to align with Android.
  • Moved the NDSStoreAccessSyncError to NDSStoreAccessSync.swift and renamed to SyncError.
  • Removed the didProposeRoutePlan notification from NavigationRouteObserver.
  • Removed the TomTomSDKNavigationEngines.DrivingHistorySnapshot from public API.
  • Removed the TomTomSDKNavigationEngines.MapMatchingResult.init(location:predictions:followedRouteIds:mapPosition:).
  • Removed the TomTomSDKNavigationEngines.MapMatchingResult.timestamp.
  • Removed the property TomTomSDKNavigationEngines.RouteSnapshot.projection from the public API.
  • Renamed the TomTomSDKDataManagement.OnStoreAccessChangedObserver.onStoreAccessChangedObserverId property to TomTomSDKDataManagement.StoreAccessChangedObserver.storeAccessChangedObserverID.
  • Renamed the TomTomSDKDataManagement.OnStoreAccessChangedObserver protocol to TomTomSDKDataManagement.StoreAccessChangedObserver.
  • Renamed the TomTomSDKDataManagementOffline.RegionGraphNodeState.InstallState to TomTomSDKDataManagementOffline.InstallState.
  • Renamed the TomTomSDKDataManagementOffline.RegionGraphNodeState.UpdateState to TomTomSDKDataManagementOffline.UpdateState.
  • Renamed the TomTomSDKNavigationEngines.MapMatchingResult.predictions to TomTomSDKNavigationEngines.MapMatchingResult.locationPredictions.
  • Restricted the TomTomSDKVehicle.VehicleProvider adoption to classes.
  • The TomTomSDKNavigationEngines.ConfigurationSnapshot constructor is no longer part of the public API.
  • Updated TomTomSDKNavigationEngines.MapMatchingResult.init(matchedLocation:timestamp:predictions:followedRouteIds:alternativeMatchedLocations:) parameters.
  • Using didAddRoute(:), didRemoveRoute(:) and didChangeActiveRoute() of NavigationRouteAddedObserver, NavigationRouteRemovedObserver and NavigationActiveRouteChangedObserver respectively.
  • Using the existential VehicleUpdateObserver in TomTomSDKVehicle.VehicleProvider.addVehicleUpdateObserver(:) and TomTomSDKVehicle.VehicleProvider.removeVehicleUpdateObserver(:).

New Features

  • Tracking route progress for multiple routes (active route and better proposal).

Fixes

  • Added documentation to the NavigationTileStore.
  • Avoiding unsafe unwrapping optionals in NavigationTileStore.checkConfiguration.
  • Removed the display of the Location Preview Panel if we are on the road.
  • Using correct unit for speed limits.
  • Сhanged the noNextInstructions error on the unavailableRoutePlan.

Updates

  • TomTomSDKDataManagement.StoreAccessChangedObserver is now available in General Availability.
  • TomTomSDKLocationProvider.MatchedLocation is now available in General Availability.
  • TomTomSDKNavigationEngines.BetterProposalAcceptanceMode is added to the TomTomSDKNavigation.TomTomNavigation protocol.
  • TomTomSDKNavigationEngines.ConfigurationSnapshot is now available in General Availability.
  • TomTomSDKNavigationEngines.MapMatchingResult is now available in General Availability.
  • TomTomSDKNavigationTileStore.NavigationTileStore is now available in General Availability.
  • Merged horizon elements if they are continuous.
  • Moved TomTomSDKNavigation.TomTomNavigation.betterProposalAcceptanceMode property to GA in the TomTomSDKNavigation.TomTomNavigation protocol scope.
  • Updated documentation in TomTomSDKNavigationEngines.WaypointArrivalState and TomTomSDKNavigationEngines.WaypointArrivalStatus.
  • Updated guides and code snippets to include the following new observers, TomTomNavigation.NavigationRouteAddedObserver, TomTomNavigation.NavigationRouteRemovedObserver, TomTomNavigation.NavigationRouteUpdateObserver and TomTomNavigation.NavigationActiveRouteChangedObserver.
  • Updated the documentation for the TomTomSDKNavigation.ProjectedRoute.

Routing

Breaking changes

  • TomTomRoutePlanner.OnlineAPIVersion is now available in General Availability.

Deprecations

  • Deprecated TomTomRoutePlanner.OnlineAPIVersion.v1 value. Use the TomTomSDKRoutePlanner.OnlineAPIVersion.v2 enum case instead.

New Features

  • Introduced new Toll section. The section presents parts of the road with the usage-based toll collection system (i.e., distance-based tolls, toll bridges and tunnels, weight-based tolls).
  • Provided a version of the RouteProjectionEngine that supports UnifiedDataAccess factory exposed by the UnifiedMapDataStoreAccessProvider.

Deprecations

  • Deprecated the TomTomSDKSearchOffline.OfflineSearch class. Instead, use the TomTomSDKSearchOffline.OfflineSearchFactory to create an instance of offline search.
  • Deprecated the TomTomSDKStructuredSearchOffline.OfflineStructuredSearch class. Instead, use the TomTomSDKStructuredSearchOffline.OfflineStructuredSearchFactory to instantiate TomTomSDKStructuredSearch.StructuredSearch that provides offline support.
  • Deprecated the TomTomSDKStructuredSearchOffline.OfflineStructuredSearchSession class. Instead, use the TomTomSDKStructuredSearch.StructuredSearchSession protocol instead to access structured search functionality.

Updates

  • TomTomSDKReverseGeocoderHybrid.HybridReverseGeocoderFactory is now available in Public Preview.
  • TomTomSDKReverseGeocoderOffline. OfflineReverseGeocoderError is now available in General Availability.
  • TomTomSDKReverseGeocoderOffline. OfflineReverseGeocoderError is now available in Public Preview.
  • TomTomSDKReverseGeocoderOffline.OfflineReverseGeocoderFactory is now available in General Availability.
  • TomTomSDKSearchHybrid.HybridSearchFactory.create(apiKey:store:timeout:customPOIProviders:customAPIURL:) is now available in Public Preview.
  • TomTomSDKSearchHybrid.HybridSearchFactory is now available in Public Preview.
  • TomTomSDKStructuredSearch.StructuredSearchSession.goBack(step:completion:) is now available in General Availability.
  • TomTomSDKStructuredSearchOffline.OfflineStructuredSearchFactory.create(store:) is now available in General Availability.

Traffic

Breaking changes

  • Changed the configuration parameter type in function TrafficFactory.createWithTPEGProvider(store:configuration:locationEngine:) from TomTomSDKBindingTPEGTrafficInternal.TPEGTrafficClientConfiguration to TomTomSDKTrafficEngine.TPEGTrafficClientConfiguration.
  • Renamed TomTomSDKTraffic.TrafficService protocol to TomTomSDKTraffic.Traffic and made TomTomSDKTraffic.TrafficService a type alias of TomTomSDKTraffic.Traffic. Changed type of trafficService argument of TomTomSDKRoutePlannerOffline.OfflineRangeCalculator.init(store:trafficService:) from TomTomSDKTraffic.TrafficService to TomTomSDKTraffic.Traffic. Changed type of trafficService argument of TomTomSDKRoutePlannerOffline.OfflineRoutePlanner.init(store:trafficService:) from TomTomSDKTraffic.TrafficService to TomTomSDKTraffic.Traffic. Changed type of trafficService argument of TomTomSDKTrafficDataProvider.TrafficDataProviderFactory.createTrafficDataProvider(trafficService:) from TomTomSDKTraffic.TrafficService to TomTomSDKTraffic.Traffic. Changed the return type of TomTomSDKTrafficEngine.TrafficFactory.create(apiKey:store:locationEngine:) from TomTomSDKTraffic.TrafficService to TomTomSDKTraffic.Traffic. Changed the return type of TomTomSDKTrafficEngine.TrafficFactory.createWithTPEGProvider(apiKey:store:locationEngine:) from TomTomSDKTraffic.TrafficService to TomTomSDKTraffic.Traffic.

Deprecations

  • Deprecated TomTomSDKTrafficTPEG.TPEGTrafficService. Use TomTomSDKTrafficEngine.TrafficFactory instead.
  • Deprecated the TomTomSDKTrafficTPEG.TPEGTrafficClientConfiguration. Use TomTomSDKTrafficEngine.TPEGTrafficClientConfiguration instead.