Navigation SDK for iOS Release Notes

This changelog describes new features and bug fixes in the Navigation SDK for iOS.

Freezing support for iOS 13 - August 16, 2022

According to the Mobile OS version support policy, we are freezing support for iOS 13 in an upcoming major version of Navigation SDK for iOS.

Versions of Navigation SDK for iOS that release beginning the second quarter of 2023 will support a minimum of iOS 14. Earlier SDK versions will continue supporting iOS 13.

If your dependencies do not specify a version number, your Xcode loads the newest SDK version and new builds of your app will not support iOS 13.

Version 4.0.0 (June 27, 2022)

  • The Terms of Service dialogue shows new language.

Features

Support freezes

  • Support for iOS 12 is now frozen. The minimum iOS version is now 13.0.
  • The new minimum version of Xcode is 13.0.

Version 3.2.1 (May 9, 2022)

Features

  • Version bump with no feature changes. This version is functionally identical to v.3.2.0.

Version 3.2.0 (April 25, 2022)

Features

  • Version bump with no feature changes. This version is functionally identical to v.3.1.1.

Version 3.1.1 (March 22, 2022)

Bug fixes

  • Previous versions closed the terms of services dialog when a user clicked on the dimmed background.

Version 3.1.0 (March 9, 2022)

Features

Bug fixes

  • Previous versions could trigger a single navigation event for multiple arrival events in a navigation session.

Version 3.0.3 (February 16, 2022)

Bug fixes Previous versions failed to launch for apps developed with SceneDelegate because the Terms of Service dialog did not display. Now, scene-based apps should correctly display the Terms of Service dialog and the app will launch after user acknowledgement.

Version 3.0.2 (January 24, 2022)

Bug fixes

  • Previous versions failed to launch for apps developed with SwiftUI because the Terms of Service dialog did not display. Now, SwiftUI-based apps should correctly display the Terms of Service dialog and the app will launch after user acknowledgement.

Version 3.0.1 (December 9, 2021)

Features

  • Added stability improvements to the release.

Version 3.0 (November 29, 2021)

Features

  • Alternative map types, including Satellite, Terrain, and Hybrid maps, are now supported in navigation mode.

  • (Beta) This release contains a preview of support for the XCFramework format. You can now install the Navigation SDK for iOS as an XCFramework, a binary package that you can use on multiple platforms including machines using the M1 chipset.

    Google recommends that you only use this Beta release for development and testing, and rely on the .framework version of the SDK for your production apps.

Support freezes

  • Support for iOS 11 is now frozen. The minimum iOS version is now 12.0.

  • The new minimum version of Xcode is 12.0.

Version 2.2 (October 19, 2021)

Features

  • During navigation, display a dotted line from the last navigation point to the destination.

Freezing support for iOS 12 - October 18, 2021

In response to changes in our internal dependencies, we are freezing support for iOS 12 in an upcoming major version of Google Maps Platform SDKs for iOS.

Navigation SDK for iOS v4.0 or higher will only support devices running a minimum of iOS 13.

Apps built with v3.x of the Maps SDK for iOS will continue to work for iOS 12. If your dependencies in CocoaPods or Carthage do not specify a version number, Xcode will load the newest version and new builds of your app will not support iOS 12.

Steps to take

  1. In your Podfile or Cartfile, specify the desired 3.x versions of Navigation SDK for iOS. See examples of CocoaPods and Carthage dependencies for Maps and Places SDK for iOS.
  2. Each time you build a new version of your app, run pod outdated or carthage outdated to check for new versions of your CocoaPods or Carthage dependencies. See the guidance on app maintenance best practices. Do not upgrade to v4.0 or higher for Navigation SDK for iOS until you are ready to drop support of iOS 12 for your app.

Version 2.2 - Freezing support for iOS 11 (July 20, 2021)

In response to changes in our internal dependencies, we are freezing support of iOS 11 in an upcoming major version of Google Maps Platform SDKs for iOS. Earlier SDK versions will continue supporting iOS 11.

The following SDK versions will only support devices running a minimum of iOS 12:

  • Maps SDK for iOS or Places SDK for iOS v6.0 or higher
  • Navigation SDK for iOS v3.0 or higher
  • Rides & Deliveries Driver or Consumer SDK v1.0 or higher

Apps built with v5.x of the Maps and Places SDKs for iOS and v2.x of the Navigation SDK will continue to work for iOS 11. If your dependencies in CocoaPods or Carthage do not specify a version number, Xcode will load the newest version and new builds of your app will not support iOS 11.

Steps to take

  1. In your Podfile or Cartfile, specify the desired 5.x versions of Maps and Places SDKs, and version 2.0 for Navigation SDK, which were released earlier this year. See examples of CocoaPods and Carthage dependencies for Maps and Places SDK for iOS.
  2. Each time you build a new version of your app, run pod outdated or carthage outdated to check for new versions of your CocoaPods or Carthage dependencies. See the guidance on app maintenance best practices. Do not upgrade to v6.0 or higher for Maps and Places SDKs, or v3.0 or higher for Navigation SDK, until you are ready to drop support of iOS 11 for your app.

Version 2.1 (June 28, 2021)

Features

  • Setting destinations with a route token now supports two-wheeler travel mode.
  • Setting followingZoomLevel now takes effect immediately in following mode; after starting a new navigation session, the camera does not zoom out.
  • Added a setTransactionIDs:errorHandler method in GMSNavigator. Use this method to set the ongoing transaction IDs which apply to the navigation events during the current navigation session.

Support freezes

  • Support for iOS 11 will be frozen in an upcoming major version.

Version 2.0 (May 13, 2021)

Decommissions

  • iOS 10 is no longer supported. The minimum OS is now 11.0.
  • ARMv7 32-bit architecture no longer supported.
  • The deprecated GMSNavigatorDelegate and GMSRoadSnappedLocationProviderDelegate protocols will change the protocol names to GMSNavigatorListener and GMSRoadSnappedLocationProviderListener, respectively. All previous delegate methods will exist in the new listeners, with the following exceptions.

    • GMSNavigator and GMSRoadSnappedLocationProvider removed the deprecated property delegate. Instead, call methods -addListener: and -removeListener, respectively, to add or remove the replacement listeners.

    • GMSNavigatorDelegate methods - (NSTimeInterval)navigatorTimeUpdateThreshold:(GMSNavigator *)navigator and - (CLLocationDistance)navigatorDistanceUpdateThreshold:(GMSNavigator *)navigator are removed. Instead, set the timeUpdateThreshold and distanceUpdateThreshold properties on GMSNavigator directly.

  • GooglePlaces.framework will not be included in the Navigation SDK for iOS .zip package in the next Navigation SDK release. If you need the Places SDK in your application, please follow the Places SDK for iOS installation instructions.

Version 1.16.0 (March 8, 2021)

  • Support for iOS 10 will be dropped in version 2.0.0.

Features:

  • Added a navigationMapStyle property to the GMSUISettings class. The map will display 2D building outlines at zoom level 18+ when this property is set to GMSNavigationMapStyleHighDetail.
  • Added a followingZoomLevel property to the GMSMapView class. You can use this property to set the zoom level when the camera is in following mode during navigation.
  • Added a stopGuidanceAtArrival property to the GMSNavigator class. You can use this property to determine whether guidance should automatically stop when navigator:didArriveAtWaypoint: is called.
  • Updated the Objective-C and Swift demos.

Bug fixes:

  • Fixed an issue where the SDK would crash when attempting to get the traveled path upon a navigator route change.

Version 1.15.1 (January 21, 2021)

Bug fixes:

Version 1.15.0 (December 8, 2020)

Features:

  • Added crash detection during SDK initialization. In cases where two or more consecutive crashes are detected at initialization time, the SDK will attempt to restore functionality by automatically resetting cached client parameters and map tile data. A recovery attempt event will be logged unless the client has opted out of abnormal termination reporting.

Version 1.14.0 (October 13, 2020)

Features:

  • Support for iOS 9.0 has been dropped. The new minimum is iOS 10.0.
  • The new minimum version of Xcode is 11.7.
  • By default, abnormal SDK terminations, such as app crashes while the SDK is still running, are monitored. This allows Google to improve SDK stability when applicable. There is also an option to opt-out by using the setAbnormalTerminationReportingEnabled: API on GMSNavigationServices.

Version 1.13.0 (August 24, 2019)

Features:

Deprecations

Note:

  • To build apps using the Navigation SDK, the current minimum IDE version supported is Xcode 11.5.

Version 1.12.0 (December 2, 2019)

Features:

  • You can now request routes with a target distance, so that routes will be ranked by their absolute delta to the target distance from smallest to largest. To do this, initialize routingOptions using the initWithTargetDistancesMeters (GMSNavigationRoutingOptions.h), and then call setDistinations (GMSNavigator.h), passing the routing options.

Note:

  • To build apps using the Navigation SDK, the current minimum IDE version supported is Xcode 11.0.

Version 1.11.0 (October 28, 2019)

Features:

  • Drivers can now receive speed alerts when they exceed speed limits. Speed alerts are enabled through shouldDisplaySpeedometer and configurable through GMSNavigationSpeedAlertOptions and GMSNavigationSpeedometerUIOptions.

  • Updated the Terms of Service dialogue language.

Version 1.10.1 (October 9, 2019)

Stability and Bug fixes

  • Fixed a race condition where getting the route leg can cause a crash during certain situations.

Version 1.10.0 (September 4, 2019)

Features:

  • Added alternateRoutesStrategy to GMSNavigationRoutingOptions. This lets the user select the number of alternate routes shown.
  • Added routingStrategy to GMSNavigationRoutingOptions. This allows the returned routes to be ordered by either time or distance.
  • Added the ability to set the navigation header accessory view (secondary header).
  • The visual appearance of the Terms and Conditions dialog is now fully customizable.

Stability and Bug fixes

  • Fixed the Terms and Conditions dialog button text to match standard language.

Version 1.9.1 (July 29, 2019)

Stability and Bug fixes

  • Improved how certain internal event listeners are deregistered when destinations are cleared.

Version 1.9.0 (June 26, 2019)

Features:

  • The title of the 'Terms and Conditions' and 'Driver Awareness' dialogs are now customizable.
  • Destinations can now be set with a side-of-the-road preference used for routing considerations.
  • Two-Wheeler travel mode (Beta): You can now set the travel mode to TWO-WHEELER to get motorcycle and scooter routes. This feature is currently only available in India and Indonesia.

Version 1.8.1 (February 6, 2019)

Stability and Bug fixes

  • Taxi mode Fixed the camera and road snapping behaviors.

Version 1.8 (December 21, 2018)

Features:

  • Taxi mode - BETA: Your app can use the lanes and streets that are specifically dedicated to taxicabs to provide routing and Estimated Time of Arrival (ETA)s for vehicles identified as taxicabs.

    The following geographical areas are currently supported:

    • Brazil: Rio de Janeiro
    • England: Birmingham, Coventry, London Metro Area, Manchester
    • Israel: Tel Aviv
    • Ireland: Edinburgh, Dublin
    • Russia: Moscow
    • Scotland: Glasglow
    • Spain: Madrid, Barcelona
  • Traffic status: Your app can report the level of congestion along a route using the getSeverity method of the TimeAndDistance class.

Version 1.7.0 (Aug 27, 2018)

Features:

  • A Directions List for the remaining turn instructions of the ride can be displayed through [GMSNavigationDirectionsListController directionsListView].
  • The speed limit sign can be enabled and will be displayed when data is available through [GMSMapView shouldDisplaySpeedLimit].

Known issues

  • A recent change in the map tile rendering code may cause a low-volue crash with signature 'gmscore::renderer::GLState::BindBuffer'. This bug is not known to occur on the Navigation API, but other google maps products with shared code. We advise caution when using the 1.7.0 release. The iOS 1.3.4 release has an older version of the renderer and would not exhibit this
    crash.

New Style Default Opt-In for Nav SDK 1.6+ (Aug 21, 2018)

  • The new basemap style has been enabled by default in the Maps SDK for iOS, however it is NOT enabled for Nav SDK users. Compiling the Nav SDK and Maps SDK together will cause your project to be opted out of the new basemap style. Therefore, contrary to the instructions for the Maps SDK, Nav SDK users will need to explicitly opt-in.

    To opt-in, use the code snippet below. The best place to do this in your app is right after providing your API key, via GMSServices provideAPIKey. You must be using at least Version 1.6 in order to opt-in.

    NSArray *options = @[@"B3MWHUG2MR0DQW"];
    BOOL didSetApiOptions = [GMSServices provideAPIOptions:options];
    NSLog(@“Options were set: %d”, didSetApiOptions);
    

Version 1.6.1 (July 13, 2018)

Stability and Bug fixes

  • Fixed a compiler setting issue where movi.2d instructions are not generated as movi.16b
  • Removed third-party BoringSSL dependency

Major Dependency Updates

  • Added third-party OpenLocationCode dependency (https://github.com/google/open-location-code)
  • Removed third-party BoringSSL dependency

Known issues

  • A recent change in the map tile rendering code may cause a low-volue crash with signature 'gmscore::renderer::GLState::BindBuffer'. This bug is not known to occur on the Navigation API, but other google maps products with shared code. We advise caution when using the 1.6.1 release. The iOS 1.3.4 release has an older version of the renderer and would not exhibit this crash.

Version 1.3.4 (July 13, 2018)

Stability and Bug fixes

  • Fixed a compiler setting issue where movi.2d instructions are not generated as movi.16b
  • Removed third-party BoringSSL dependency

Major Dependency Updates

  • Added third-party OpenLocationCode dependency (https://github.com/google/open-location-code)
  • Removed third-party BoringSSL dependency

Version 1.6 (May 10, 2018)

Stability and Bug fixes

  • Added an error code which is returned when a stale Place ID is provided.
  • Ensure the navigation header starts updating again automatically after being scrolled if the user catches up to the maneuver which they scrolled to.
  • Route callouts no longer disappear while a user pans the map.
  • When using simulated locations, guidance cards are no longer blank.

Version 1.3.3 (March 26, 2017)

Known issues

  • Nav SDK does not yet have built-in support for iPhone X safe areas. When mapView.navigationEnabled is YES, the mapView will not automatically place map controls within the safe areas and the paddingAdjustmentBehavior property will have no effect.
  • The location simulator may sometimes get into a state where multiple simulated location sources are active simultaneously. This can cause the navigation engine to stop working and present a grey navigation header to the user. This has not been observed when using real GPS location updates.
  • Route ETA labels sometimes disappear whilst the user is panning the map.
  • The navigation header will not automatically start updating again if the user scrolls the header and then drives past the maneuver they have scrolled to.

Bug fixes and improvements.

This version is functionally identical to v1.3.

Version 1.3.2 (Jan 23, 2017)

Added a mitigation for Open GL crashes with stack traces containing gmscore::renderer::ios::GLRenderTarget::FrameEnd() where the process is killed by SIGABRT. This change is expected to reduce the rate of these crashes but not fix them completely. The underlying issue is believed to be in Apple's Open GL implementation.

Version 1.3.1 (December 21, 2017)

Changed the build process for the frameworks to stop using the -bitcode_hide_symbols flag in the prelinking stage. This causes non-exported symbols to be included in the bitcode bundle which may allow app stack traces to be symbolicated to a greater extent.

This version is functionally identical to v1.3.

Version 1.3 (November 6, 2017)

Features:

  • Added a mapViewDidTapRecenterButton: method which is called on the GMSMapViewNavigationUIDelegate when the user taps the re-center button.

Resolved Issues:

  • Fixed an issue where the distance to the next turn was not shown in the navigation header.
  • Fixed an issue where the ETA for the current route was displayed unnecessarily when guidance is active and was not updated as navigation progressed.

Version 1.2 (October 26, 2017)

Resolved Issues:

  • Fixed an issue where Google Navigation SDK for iOS would sometimes report a location unavailable error if the user was stationary.

Version 1.1.1 (October 24, 2017)

Features:

  • Added the option to disable bluetooth audio output using the new audioDeviceType property on GMSNavigator.

Resolved Issues:

  • Fixed an issue where setting the navigationFooterEnabled property to NO sometimes didn’t work.

Version 1.1 (August 24, 2017)

  • Miscellaneous bug fixes and improvements.
  • NOTICE: Xcode 7 will no longer be supported as of version 1.2.

Version 1.0 (July 5, 2017)

Launch of the Navigation SDK for iOS.