Configura i listener
Dopo aver inizializzato l'SDK Driver e creato un GMTDDeliveryDriverAPI
Ad esempio, puoi configurare listener di eventi per monitorare l'esito positivo o negativo di
aggiornamenti dei veicoli inviati a Fleet Engine e al tuo backend. Questi listener possono
attivare azioni all'interno dell'app del conducente, ad esempio inviare una notifica al conducente se
la comunicazione con il backend non funziona.
Ascolta gli eventi di aggiornamento del veicolo
Quando il conducente attiva gli aggiornamenti della posizione nell'app del conducente, l'SDK del driver invia
aggiornamenti regolari del veicolo a Fleet Engine e al backend del cliente tramite
GMTDDeliveryVehicleReporter
corso. Puoi fare in modo che l'app risponda all'aggiornamento
configurando il protocollo GMTDVehicleReporterListener
.
Con GMTDVehicleReporterListener
, puoi gestire i seguenti eventi:
vehicleReporter:didSucceedVehicleUpdate
Informa l'app driver che i servizi di backend hanno ricevuto correttamente il aggiornamento della posizione e dello stato del veicolo.
vehicleReporter:didFailVehicleUpdate:withError
Informa il listener che un aggiornamento del veicolo non è riuscito. Purché il conducente abbia aggiornamenti della posizione attivati, il corso
GMTDDeliveryVehicleReporter
continua per 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
Attiva aggiornamenti posizione
Per attivare gli aggiornamenti della posizione, nell'app del conducente su
GMTDDeliveryVehicleReporter
, imposta locationTrackingEnabled
su
YES
. Quindi,
GMTDDeliveryVehicleReporter
corso invia automaticamente aggiornamenti sulla posizione a
Fleet Engine. Inoltre, quando GMSNavigator
è in modalità di navigazione,
si verifica quando una destinazione è impostata tramite setDestinations
,
GMTDDeliveryVehicleReporter
classe invia automaticamente aggiornamenti su percorso e orario di arrivo stimato.
L'SDK del conducente imposta il percorso in modo che corrisponda a quello corrente del conducente. A
garantire aggiornamenti precisi sulla posizione, impostare la tappa in
-setDestinations:callback:
affinché corrisponda alla destinazione in Fleet Engine.
L'esempio seguente mostra come attivare gli aggiornamenti di 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
, l'SDK Driver
invia aggiornamenti della posizione a Fleet Engine a intervalli di 10 secondi. Puoi modificare
l'intervallo di aggiornamento con locationUpdateInterval
su un intervallo di aggiornamento minimo
di 5 o al massimo 60 secondi. Aggiornamenti più frequenti possono comportare
richieste ed errori più lenti.