Configurer des écouteurs
Après avoir initialisé le SDK Driver et créé une instance GMTDDeliveryDriverAPI
, vous pouvez configurer des écouteurs d'événements pour surveiller le succès ou l'échec des mises à jour de véhicule envoyées à Fleet Engine et à votre backend. Ces écouteurs peuvent déclencher des actions dans votre application pilote, par exemple en informant le pilote 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 conducteur, le SDK pilote envoie régulièrement des informations sur le 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
.
GMTDVehicleReporterListener
vous permet de gérer les événements suivants:
vehicleReporter:didSucceedVehicleUpdate
Informe l'application du conducteur que les services de backend ont bien reçu la mise à jour de l'emplacement 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 activé les mises à jour de position, la classe
GMTDDeliveryVehicleReporter
continue 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 position, dans l'application conducteur sur GMTDDeliveryVehicleReporter
, définissez locationTrackingEnabled
sur YES
. La classe GMTDDeliveryVehicleReporter
envoie ensuite automatiquement les mises à jour de position à Fleet Engine. De plus, lorsque GMSNavigator
est en mode de 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 SDK Driver définit l'itinéraire de sorte qu'il corresponde au chemin de navigation actuel du conducteur. Pour garantir des mises à jour précises de la position, définissez le point de cheminement dans -setDestinations:callback:
afin 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 SDK Driver envoie des mises à jour de position à Fleet Engine à un intervalle de 10 secondes. Vous pouvez modifier l'intervalle de mise à jour avec locationUpdateInterval
sur un intervalle minimal de 5 secondes ou un maximum de 60 secondes. Des mises à jour plus fréquentes peuvent entraîner des requêtes plus lentes et des erreurs.