Get the vehicle ready

This section shows how to get the vehicle ready for trips. You must complete each of the following steps before your backend can match a vehicle to a trip.

Set up listeners

After initializing the Driver SDK and creating a GMTDRidesharingDriverAPI instance, you can set up event listeners to monitor the success or failure of vehicle updates sent to Fleet Engine and your backend. These listeners can trigger actions within your driver app, such as notifying the driver if communication with your backend fails.

Listen for vehicle update events

When the driver enables location updates in the driver app, the Driver SDK sends regular vehicle updates to Fleet Engine and the customer backend through the GMTDVehicleReporter class. You can have the app respond to update events by setting up the GMTDVehicleReporterListener protocol.

With GMTDVehicleReporterListener , you can handle the following events:

The following examples show how to set up GMTDVehicleReporterListener to handle these events:

Swift

  import 
  
 GoogleRidesharingDriver 
 private 
  
 let 
  
 providerID 
  
 = 
  
 "INSERT_YOUR_PROVIDER_ID" 
 class 
  
 SampleViewController 
 : 
  
 UIViewController 
 , 
  
 GMTDVehicleReporterListener 
  
 { 
  
 private 
  
 let 
  
 mapView 
 : 
  
 GMSMapView 
  
 override 
  
 func 
  
 viewDidLoad 
 () 
  
 { 
  
 // Assumes you have implemented the sample code up to this step. 
  
 ridesharingDriverAPI 
 . 
 vehicleReporter 
 . 
 add 
 ( 
 self 
 ) 
  
 } 
  
 func 
  
 vehicleReporter 
 ( 
 _ 
  
 vehicleReporter 
 : 
  
 GMTDVehicleReporter 
 , 
  
 didSucceed 
  
 vehicleUpdate 
 : 
  
 GMTDVehicleUpdate 
 ) 
  
 { 
  
 // Handle update succeeded. 
  
 } 
  
 func 
  
 vehicleReporter 
 ( 
 _ 
  
 vehicleReporter 
 : 
  
 GMTDVehicleReporter 
 , 
  
 didFail 
  
 vehicleUpdate 
 : 
  
 GMTDVehicleUpdate 
 , 
  
 withError 
  
 error 
 : 
  
 Error 
 ) 
  
 { 
  
 // Handle update failed. 
  
 } 
 } 
 

Objective-C

  /** 
 *   SampleViewController.h 
 */ 
 @interface 
 SampleViewController 
: UIViewController<GMTDVehicleReporterListener> 
 @end 
 /** 
 *   SampleViewController.m 
 */ 
 #import "SampleViewController.h" 
 #import "SampleAccessTokenProvider.h" 
 #import <GoogleRidesharingDriver/GoogleRidesharingDriver.h> 
 static 
  
 NSString 
  
 * 
 const 
  
 PROVIDER_ID 
  
 = 
  
 @"INSERT_YOUR_PROVIDER_ID" 
 ; 
 @implementation 
 SampleViewController 
 { 
  
 GMSMapView 
  
 * 
 _mapView 
 ; 
 } 
 - 
 ( 
 void 
 ) 
 viewDidLoad 
  
 { 
  
 // Assumes you have implemented the sample code up to this step. 
  
 [ 
 ridesharingDriverAPI 
 . 
 vehicleReporter 
  
 addListener 
 : 
 self 
 ]; 
 } 
 - 
 ( 
 void 
 ) 
 vehicleReporter: 
 ( 
 GMTDVehicleReporter 
  
 * 
 ) 
 vehicleReporter 
  
 didSucceedVehicleUpdate: 
 ( 
 GMTDVehicleUpdate 
  
 * 
 ) 
 vehicleUpdate 
  
 { 
  
 // Handle update succeeded. 
 } 
 - 
 ( 
 void 
 ) 
 vehicleReporter: 
 ( 
 GMTDVehicleReporter 
  
 * 
 ) 
 vehicleReporter 
  
 didFailVehicleUpdate: 
 ( 
 GMTDVehicleUpdate 
  
 * 
 ) 
 vehicleUpdate 
  
 withError: 
 ( 
 NSError 
  
 * 
 ) 
 error 
  
 { 
  
 // Handle update failed. 
 } 
 @end 
 

Listen for vehicle location updates

The Navigation SDK provides location updates to the Driver SDK through the GMSRoadSnappedLocationProvider class. To receive those updates, you must set up the GMTDVehicleReporter as a listener.

Swift

  import 
  
 GoogleRidesharingDriver 
 private 
  
 let 
  
 providerID 
  
 = 
  
 "INSERT_YOUR_PROVIDER_ID" 
 class 
  
 SampleViewController 
 : 
  
 UIViewController 
 , 
  
 GMTDVehicleReporterListener 
  
 { 
  
 private 
  
 let 
  
 mapView 
 : 
  
 GMSMapView 
  
 override 
  
 func 
  
 viewDidLoad 
 () 
  
 { 
  
 // Assumes you have implemented the sample code up to this step. 
  
 if 
  
 let 
  
 roadSnappedLocationProvider 
  
 = 
  
 mapView 
 . 
 roadSnappedLocationProvider 
  
 { 
  
 roadSnappedLocationProvider 
 . 
 add 
 ( 
 ridesharingDriverAPI 
 . 
 vehicleReporter 
 ) 
  
 roadSnappedLocationProvider 
 . 
 startUpdatingLocation 
 () 
  
 } 
  
 } 
 } 
 

Objective-C

  /** 
 *   SampleViewController.h 
 */ 
 @interface 
 SampleViewController 
: UIViewController<GMTDVehicleReporterListener> 
 @end 
 /** 
 *   SampleViewController.m 
 */ 
 #import "SampleViewController.h" 
 #import "SampleAccessTokenProvider.h" 
 #import <GoogleRidesharingDriver/GoogleRidesharingDriver.h> 
 static 
  
 NSString 
  
 * 
 const 
  
 PROVIDER_ID 
  
 = 
  
 @"INSERT_YOUR_PROVIDER_ID" 
 ; 
 @implementation 
 SampleViewController 
 { 
  
 GMSMapView 
  
 * 
 _mapView 
 ; 
 } 
 - 
 ( 
 void 
 ) 
 viewDidLoad 
  
 { 
  
 // Assumes you have implemented the sample code up to this step. 
  
 [ 
 _mapView 
 . 
 roadSnappedLocationProvider 
  
 addListener 
 : 
 ridesharingDriverAPI 
 . 
 vehicleReporter 
 ]; 
  
 [ 
 _mapView 
 . 
 roadSnappedLocationProvider 
  
 startUpdatingLocation 
 ]; 
 } 
 @end 
 

Enable location updates

To enable location updates, set locationTrackingEnabled to true on GMTDVehicleReporter in the driver app. Then the GMTDVehicleReporter class automatically sends location updates to Fleet Engine. After the Fleet Engine and customer backend services match and assign the vehicle to a trip, the GMTDVehicleReporter class sends route updates automatically when the GMSNavigator is in navigation mode, which is when a destination is set through setDestinations .

The Driver SDK sets the route to match the driver's current navigation path. To ensure accurate location updates, set the waypoint in setDestinations to match the destination in Fleet Engine.

The following example shows how to enable location updates:

Swift

  import 
  
 GoogleRidesharingDriver 
 private 
  
 let 
  
 providerID 
  
 = 
  
 "INSERT_YOUR_PROVIDER_ID" 
 class 
  
 SampleViewController 
 : 
  
 UIViewController 
 , 
  
 GMTDVehicleReporterListener 
  
 { 
  
 private 
  
 let 
  
 mapView 
 : 
  
 GMSMapView 
  
 override 
  
 func 
  
 viewDidLoad 
 () 
  
 { 
  
 // Assumes you have implemented the sample code up to this step. 
  
 ridesharingDriverAPI 
 . 
 vehicleReporter 
 . 
 locationTrackingEnabled 
  
 = 
  
 true 
  
 } 
 } 
 

Objective-C

  /** 
 *   SampleViewController.m 
 */ 
 #import "SampleViewController.h" 
 #import "SampleAccessTokenProvider.h" 
 #import <GoogleRidesharingDriver/GoogleRidesharingDriver.h> 
 static 
  
 NSString 
  
 * 
 const 
  
 PROVIDER_ID 
  
 = 
  
 @"INSERT_YOUR_PROVIDER_ID" 
 ; 
 @implementation 
 SampleViewController 
 { 
  
 GMSMapView 
  
 * 
 _mapView 
 ; 
 } 
 - 
 ( 
 void 
 ) 
 viewDidLoad 
  
 { 
  
 // Assumes you have implemented the sample code up to this step. 
  
 ridesharingDriverAPI 
 . 
 vehicleReporter 
 . 
 locationTrackingEnabled 
  
 = 
  
 YES 
 ; 
 } 
 @end 
 

Set the update interval

By default, when you set locationTrackingEnabled to true , the Driver SDK sends trip and vehicle updates to Fleet Engine at a 10-second interval. You can change the update interval with locationUpdateInterval to a minimum update interval of 5 seconds or a maximum of 60 seconds. More frequent updates may result in slower requests and errors.

Set the vehicle state to online

After you enable location updates, set the vehicle state to ONLINE to make the vehicle available for search queries in Fleet Engine.

The following examples show how to set the vehicle state to ONLINE . For details, see updateVehicleState .

Swift

  import 
  
 GoogleRidesharingDriver 
 private 
  
 let 
  
 providerID 
  
 = 
  
 "INSERT_YOUR_PROVIDER_ID" 
 class 
  
 SampleViewController 
 : 
  
 UIViewController 
 , 
  
 GMTDVehicleReporterListener 
  
 { 
  
 private 
  
 let 
  
 mapView 
 : 
  
 GMSMapView 
  
 override 
  
 func 
  
 viewDidLoad 
 () 
  
 { 
  
 // Assumes you have implemented the sample code up to this step. 
  
 ridesharingDriverAPI 
 . 
 vehicleReporter 
 . 
 update 
 (. 
 online 
 ) 
  
 } 
 } 
 

Objective-C

  #import "SampleViewController.h" 
 #import "SampleAccessTokenProvider.h" 
 #import <GoogleRidesharingDriver/GoogleRidesharingDriver.h> 
 static 
  
 NSString 
  
 * 
 const 
  
 PROVIDER_ID 
  
 = 
  
 @"INSERT_YOUR_PROVIDER_ID" 
 ; 
 @implementation 
 SampleViewController 
 { 
  
 GMSMapView 
  
 * 
 _mapView 
 ; 
 } 
 - 
 ( 
 void 
 ) 
 viewDidLoad 
  
 { 
  
 // Assumes you have implemented the sample code up to this step. 
  
 [ 
 ridesharingDriverAPI 
 . 
 vehicleReporter 
  
 updateVehicleState 
 : 
 GMTDVehicleStateOnline 
 ]; 
 } 
 @end 
 

What's next

Set the trip details

Create a Mobile Website
View Site in Mobile | Classic
Share by: