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 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 à la mise à jour
en configurant le protocole GMTDVehicleReporterListener
.
GMTDVehicleReporterListener
vous permet de 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 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 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.