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 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 demander à l'application de répondre 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 Driver que les services 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
. 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 garantir des mises à jour de position précises, définissez le point de cheminement dans -setDestinations:callback:
pour qu'il corresponde à la destination dans Fleet Engine.
L'exemple suivant montre comment activer les notifications de 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.