Préparer le véhicule

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

Configurer des écouteurs

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

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

Lorsque le conducteur active les mises à jour de la position dans l'application du conducteur, le SDK du pilote envoie des mises à jour régulières du véhicule à Fleet Engine et au client backend via la classe GMTDVehicleReporter. Vous pouvez demander à l'application de répondre pour mettre à jour des événements en configurant le protocole GMTDVehicleReporterListener.

GMTDVehicleReporterListener vous permet de gérer les événements suivants:

  • vehicleReporter:didSucceedVehicleUpdate

    Informe l'application pilote que les services de backend ont bien reçu le 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 conducteur a mises à jour de la position activées, 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 notifications de position du véhicule

Le SDK Navigation fournit des mises à jour de la position au SDK Driver via le GMSRoadSnappedLocationProvider. Pour les recevoir, vous devez définir d'activer 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 sur GMTDVehicleReporter dans l'application de pilote. Ensuite, la classe GMTDVehicleReporter envoie automatiquement des mises à jour de la position à Fleet Engine. Après que Fleet Engine et les services de backend des clients mettent en correspondance le véhicule et l'attribuent à un trajet, La classe GMTDVehicleReporter envoie automatiquement des mises à jour de l'itinéraire lorsque la GMSNavigator est en mode de navigation, c'est-à-dire lorsqu'une destination est définie via setDestinations

Le SDK Driver définit l'itinéraire de sorte qu'il corresponde au chemin de navigation actuel du conducteur. À pour que la position soit mise à jour correctement, définissez le point de cheminement dans setDestinations en conséquence 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 du trajet et du véhicule à Fleet Engine toutes les 10 secondes. Vous pouvez définissez l'intervalle de mise à jour sur une valeur minimale avec locationUpdateInterval un intervalle de 5 secondes ou un maximum de 60 secondes. Des mises à jour plus fréquentes peuvent ce qui ralentit les requêtes et entraîne 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 disponible pour des requêtes de recherche dans Fleet Engine.

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