Combine both Driver SDK and Consumer SDK into the same iOS app

Reasons to add both SDKs in the same iOS app

In some cases, you might want to have both the Driver SDK and the Consumer SDK in the same iOS app. For example:

  1. You want one app to address both driver and passenger functionalities.
  2. Your app needs both an expeditor/dispatcher view, so your drivers can use it, but other team members can track the details of a single vehicle.

Prerequisites to build both SDKs in the same application

Both SDKs must be configured in the project setup. For different ways of framework installation, you can follow the Driver SDK guide with some minor tweaks:

  1. For Cocoapods installation, see Getting Started with the Driver SDK for iOS Project Configuration Cocoapods.

    In the Podfile, add the Consumer SDK dependency. The Podfile should look like this

    source "https://cpdc-eap.googlesource.com/ridesharing-consumer-sdk.git"
    source "https://cpdc-eap.googlesource.com/ridesharing-driver-sdk.git"
    source "https://github.com/CocoaPods/Specs.git"
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
        pod 'GoogleRidesharingConsumer'
        pod 'GoogleRidesharingDriver'
    end
    
  2. For manual installation, see Getting Started with the Driver SDK for iOS Project Configuration Manual Installation.

    After following the Driver SDK installation guide, follow steps 5 and 6 in the Getting started with the Consumer SDK for iOS Project Configuration Manual Installation to configure the Consumer SDK.

Versioning

Both the Driver SDK and the Consumer SDK need to have versions 3.3.0 or later to support this feature.

Theoretical breaking changes of the SDKs

The Driver and Consumer SDKs v3.3.0 introduces the following changes which could theoretically cause issues for some Driver SDK apps, although this is unlikely. In general, if your Driver SDK app used classes meant for the Consumer SDK, you will need to declare the Consumer SDK as a dependency to avoid issues. Follow is the list of changes:

Driver SDK

Removed unused classes:

  • GMTSLatLng.h
  • GMTSRequest.h
  • GMTSRequestHeader.h
  • GMTSRequestOptions.h
  • GMTSRequestOptionsSupport.h
  • GMTSSpeedReadingSpan.h
  • GMTSTerminalLocation.h
  • GMTSTimestamp.h
  • GMTSTrafficData.h
  • GMTSTrip.h
  • GMTSTripPropertyField.h
  • GMTSTripWaypoint.h
  • GMTSVehicle.h
  • GMTSVehicleLocation.h
  • GMTSVehicleMatch.h
  • GMTSVehicleSupportedTripType.h
  • GMTSVehicleType.h
  • GMTSWaypoint.h

Renamed the class in Preview which is only used by the trusted driver mode in Last Mile Fleet Solution. For trusted mode, see Trusted driver model (Preview).

  • GMTSTaskInfo.h -> GMTDTaskInfo.h

Consumer SDK

Renamed GMTSImmutableData to GMTCImmutableData class. GMTSImmutableData was only used as a base class and never used directly.

  • GMTSImmutableData.h -> GMTCImmutableData.h

Renamed a typedef which should be backward compatible:

  • GMTSFleetEngineIDString.h -> GMTCFleetEngineIDString.h