Préparer le véhicule

Cette section explique comment préparer le véhicule pour les trajets. Vous devez effectuer chacune des étapes suivantes pour que votre backend puisse associer un véhicule à un trajet.

Configurer des écouteurs

Après avoir initialisé le SDK Driver et créé une instance GMTDRidesharingDriverAPI, vous pouvez configurer des écouteurs d'événements pour surveiller la réussite ou l'échec des mises à jour de véhicules envoyées à Fleet Engine et à votre backend. Ces écouteurs peuvent déclencher des actions dans votre application pour chauffeur, par exemple en informant le chauffeur si la communication avec votre backend échoue.

Écouter les événements de mise à jour du véhicule

Lorsque le chauffeur active les mises à jour de la position dans l'application pour chauffeur, le SDK Driver envoie régulièrement des mises à jour du véhicule à Fleet Engine et au backend client via la classe GMTDVehicleReporter. Vous pouvez faire en sorte que l'application réponde aux événements de mise à jour en configurant le protocole GMTDVehicleReporterListener.

Avec GMTDVehicleReporterListener, vous pouvez gérer les événements suivants :

  • vehicleReporter:didSucceedVehicleUpdate

    Informe l'application pour chauffeur que les services de backend ont bien reçu la mise à jour de la position et de l'état du véhicule.

  • vehicleReporter:didFailVehicleUpdate:withError

    Informe l'écouteur qu'une mise à jour du véhicule a échoué. Tant que le chauffeur a activé les mises à jour de la position, la classe GMTDVehicleReporter continue d'envoyer les dernières données à Fleet Engine.

Les exemples suivants montrent comment configurer GMTDVehicleReporterListener pour gérer ces événements :

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

Écouter les mises à jour de la position du véhicule

Le SDK Navigation fournit des mises à jour de la position au SDK Driver via la classe GMSRoadSnappedLocationProvider. Pour recevoir ces mises à jour, vous devez configurer GMTDVehicleReporter en tant qu'écouteur.

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

Activer les mises à jour de la position

Pour activer les mises à jour de la position, définissez locationTrackingEnabled sur true dans GMTDVehicleReporter dans l'application pour chauffeur. La classe GMTDVehicleReporter envoie ensuite automatiquement des mises à jour de la position à Fleet Engine. Une fois que les services de backend Fleet Engine et client ont associé et attribué le véhicule à un trajet, la classe GMTDVehicleReporter envoie automatiquement des mises à jour de l'itinéraire lorsque GMSNavigator est en mode navigation, c'est-à-dire lorsqu'une destination est définie via setDestinations.

Le SDK Driver définit l'itinéraire pour qu'il corresponde au trajet de navigation actuel du chauffeur. Pour garantir la précision des notifications de position, définissez le point de cheminement dans setDestinations pour qu'il corresponde à la destination dans Fleet Engine.

L'exemple suivant montre comment activer les mises à jour de la position :

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

Définir l'intervalle de mise à jour

Par défaut, lorsque vous définissez locationTrackingEnabled sur true, le SDK Driver envoie des mises à jour de trajet et de véhicule à Fleet Engine à un intervalle de 10 secondes. Vous pouvez modifier l'intervalle de mise à jour avec locationUpdateInterval pour qu'il soit compris entre 5 et 60 secondes. Des mises à jour plus fréquentes peuvent entraîner des requêtes plus lentes et des erreurs.

Définir l'état du véhicule sur "En ligne"

Après avoir activé les mises à jour de la position, définissez l'état du véhicule sur ONLINE pour que le véhicule soit disponible pour les requêtes de recherche dans Fleet Engine.

Les exemples suivants montrent comment définir l'état du véhicule sur ONLINE. Pour en savoir plus, consultez 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

Étape suivante

Définir les détails du trajet