Configurer des écouteurs
Après avoir initialisé le Driver SDK et créé une instance GMTDDeliveryDriverAPI, 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 conducteur, par exemple en informant 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 conducteur, le Driver SDK envoie régulièrement des mises à jour du véhicule à Fleet Engine et au backend client via la classe GMTDDeliveryVehicleReporter. 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:didSucceedVehicleUpdateInforme l'application conducteur que les services de backend ont bien reçu la mise à jour de la position et de l'état du véhicule.
vehicleReporter:didFailVehicleUpdate:withErrorInforme l'écouteur qu'une mise à jour du véhicule a échoué. Tant que le conducteur a activé les mises à jour de la position, la classe
GMTDDeliveryVehicleReportercontinue d'envoyer les dernières données à 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, dans l'application conducteur sur GMTDDeliveryVehicleReporter, définissez locationTrackingEnabled sur YES. La classe GMTDDeliveryVehicleReporter envoie ensuite automatiquement les mises à jour de la position à Fleet Engine. De plus, lorsque GMSNavigator est en mode navigation (c'est-à-dire lorsqu'une destination est définie via setDestinations), la classe GMTDDeliveryVehicleReporter envoie automatiquement des mises à jour de l'itinéraire et de l'heure d'arrivée prévue.
Le Driver SDK définit l'itinéraire pour qu'il corresponde au trajet de navigation actuel du conducteur. Pour garantir la précision des mises à jour de la position, définissez le point de repère dans -setDestinations:callback: 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.
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 Driver SDK envoie des mises à jour de la position à 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.