Préparer le véhicule

Configurer des écouteurs

Après avoir initialisé le SDK Driver et créé un GMTDDeliveryDriverAPI 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 position dans l'application du conducteur, le SDK du pilote envoie des mises à jour régulières du véhicule à Fleet Engine et au backend du client via la GMTDDeliveryVehicleReporter. Vous pouvez demander à l'application de répondre à la mise à jour 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 GMTDDeliveryVehicleReporter continue pour envoyer les données les plus récentes à Fleet Engine.

L'exemple suivant montre 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.
    deliveryDriverAPI.vehicleReporter.add(self)
  }

  func vehicleReporter(_ vehicleReporter: GMTDDeliveryVehicleReporter, didSucceed vehicleUpdate: GMTDVehicleUpdate) {
    // Handle update succeeded.
  }

  func vehicleReporter(_ vehicleReporter: GMTDDeliveryVehicleReporter, 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 IMPLEMENTED HAVE THE SAMPLE CODE UP TO THIS STEP.
  [delivervehicleReporter addListener:self];
}

- (void)vehicleReporter:(GMTDDeliveryVehicleReporter *)vehicleReporter didSucceedVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate {
  // Handle update succeeded.
}

- (void)vehicleReporter:(GMTDDeliveryVehicleReporter *)vehicleReporter didFailVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate withError:(NSError *)error {
  // Handle update failed.
}

@end

Activer les mises à jour de la position

Pour activer les mises à jour de la position, ouvrez l'application du conducteur sur GMTDDeliveryVehicleReporter, définissez locationTrackingEnabled sur YES Dans ce cas, La classe GMTDDeliveryVehicleReporter envoie automatiquement des notifications de position à Fleet Engine. De plus, lorsque GMSNavigator est en mode de navigation, lorsqu'une destination est définie via setDestinations, La classe GMTDDeliveryVehicleReporter envoie automatiquement des informations sur l'itinéraire et l'heure d'arrivée prévue.

Le SDK Driver définit l'itinéraire de sorte qu'il corresponde au chemin de navigation actuel du conducteur. À pour des mises à jour précises de la position, définissez le point de cheminement dans -setDestinations:callback: pour correspondre à 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.
    deliveryDriverAPI.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.
  deliveryDriverAPI.vehicleReporter.locationTrackingEnabled = YES;
}

@end

(Facultatif) Définir l'intervalle de mise à jour

Par défaut, lorsque vous définissez locationTrackingEnabled sur YES, le SDK Driver envoie des mises à jour de la position à Fleet Engine à 10 secondes d'intervalle. Vous pouvez modifier l'intervalle de mise à jour avec locationUpdateInterval à un intervalle de mise à jour minimal de 5 secondes ou un maximum de 60 secondes. Des mises à jour plus fréquentes peuvent entraîner les requêtes et les erreurs plus lentes.