Configurare i listener
Dopo aver inizializzato il Driver SDK e creato un'istanza di GMTDDeliveryDriverAPI, puoi configurare i listener di eventi per monitorare la riuscita o il fallimento degli aggiornamenti dei veicoli inviati a Fleet Engine e al tuo backend. Questi listener possono attivare azioni all'interno dell'app per conducenti, ad esempio inviare una notifica al conducente se la comunicazione con il backend non riesce.
Ascoltare gli eventi di aggiornamento dei veicoli
Quando il conducente attiva gli aggiornamenti della posizione nell'app per conducenti, il Driver SDK invia aggiornamenti regolari dei veicoli a Fleet Engine e al backend del cliente tramite la classe GMTDDeliveryVehicleReporter. Puoi fare in modo che l'app risponda agli eventi di aggiornamento configurando il protocollo GMTDVehicleReporterListener.
Con GMTDVehicleReporterListener, puoi gestire i seguenti eventi:
vehicleReporter:didSucceedVehicleUpdateInforma l'app per conducenti che i servizi di backend hanno ricevuto correttamente l'aggiornamento della posizione e dello stato del veicolo.
vehicleReporter:didFailVehicleUpdate:withErrorInforma il listener che un aggiornamento del veicolo non è riuscito. Finché il conducente ha attivato gli aggiornamenti della posizione, la classe
GMTDDeliveryVehicleReportercontinua a inviare i dati più recenti a Fleet Engine.
L'esempio seguente mostra come configurare GMTDVehicleReporterListener per gestire questi eventi:
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
Attivare gli aggiornamenti della posizione
Per attivare gli aggiornamenti della posizione, nell'app per conducenti su GMTDDeliveryVehicleReporter, imposta locationTrackingEnabled su YES. La classe GMTDDeliveryVehicleReporter invia automaticamente gli aggiornamenti della posizione a Fleet Engine. Inoltre, quando GMSNavigator è in modalità di navigazione, ovvero quando una destinazione viene impostata tramite setDestinations, la classe GMTDDeliveryVehicleReporter invia automaticamente gli aggiornamenti di percorso e ETA.
Il Driver SDK imposta il percorso in modo che corrisponda al percorso di navigazione attuale del conducente. Per garantire aggiornamenti della posizione precisi, imposta il waypoint in -setDestinations:callback: in modo che corrisponda alla destinazione in Fleet Engine.
L'esempio seguente mostra come attivare gli aggiornamenti della posizione:
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
(Facoltativo) Impostare l'intervallo di aggiornamento
Per impostazione predefinita, quando imposti locationTrackingEnabled su YES, il Driver SDK invia gli aggiornamenti della posizione a Fleet Engine a un intervallo di 10 secondi. Puoi modificare l'intervallo di aggiornamento con locationUpdateInterval a un intervallo minimo di 5 secondi o a un massimo di 60 secondi. Aggiornamenti più frequenti possono comportare richieste più lente ed errori.