Questa sezione mostra come preparare il veicolo per i viaggi. Devi completare ciascuno dei seguenti passaggi prima che il tuo backend possa associare un veicolo a una corsa.
Configura i listener
Dopo aver inizializzato l'SDK Driver e creato un GMTDRidesharingDriverAPI
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 abilita gli aggiornamenti della posizione nell'app del conducente, l'SDK Driver
invia aggiornamenti regolari del veicolo a Fleet Engine e al cliente
tramite la classe GMTDVehicleReporter
. Puoi chiedere all'app di rispondere
per aggiornare gli eventi 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
GMTDVehicleReporter
continua a inviare i dati più recenti a Fleet Engine.
I seguenti esempi mostrano 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.
ridesharingDriverAPI.vehicleReporter.add(self)
}
func vehicleReporter(_ vehicleReporter: GMTDVehicleReporter, didSucceed vehicleUpdate: GMTDVehicleUpdate) {
// Handle update succeeded.
}
func vehicleReporter(_ vehicleReporter: GMTDVehicleReporter, 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 have implemented the sample code up to this step.
[ridesharingDriverAPI.vehicleReporter addListener:self];
}
- (void)vehicleReporter:(GMTDVehicleReporter *)vehicleReporter didSucceedVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate {
// Handle update succeeded.
}
- (void)vehicleReporter:(GMTDVehicleReporter *)vehicleReporter didFailVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate withError:(NSError *)error {
// Handle update failed.
}
@end
Ascolta gli aggiornamenti sulla posizione del veicolo
L'SDK di navigazione fornisce aggiornamenti della posizione all'SDK del driver tramite la
GMSRoadSnappedLocationProvider
corso. Per ricevere questi aggiornamenti, devi impostare
imposta GMTDVehicleReporter
come ascoltatore.
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.
if let roadSnappedLocationProvider = mapView.roadSnappedLocationProvider {
roadSnappedLocationProvider.add(ridesharingDriverAPI.vehicleReporter)
roadSnappedLocationProvider.startUpdatingLocation()
}
}
}
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 have implemented the sample code up to this step.
[_mapView.roadSnappedLocationProvider addListener:ridesharingDriverAPI.vehicleReporter];
[_mapView.roadSnappedLocationProvider startUpdatingLocation];
}
@end
Attiva aggiornamenti posizione
Per attivare gli aggiornamenti della posizione, imposta locationTrackingEnabled
su true
il giorno
GMTDVehicleReporter
nell'app del conducente. Quindi la classe GMTDVehicleReporter
invia automaticamente aggiornamenti sulla posizione a Fleet Engine. Dopo che i modelli Fleet Engine e
dei servizi di backend del cliente abbinano e assegnano il veicolo a una corsa,
La classe GMTDVehicleReporter
invia automaticamente gli aggiornamenti dei percorsi quando
GMSNavigator
è in modalità di navigazione, ovvero quando una destinazione è impostata tramite
setDestinations
.
L'SDK del conducente imposta il percorso in modo che corrisponda a quello corrente del conducente. A
assicurati che la posizione sia aggiornata, imposta la tappa in setDestinations
in modo che corrisponda
la 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.
ridesharingDriverAPI.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.
ridesharingDriverAPI.vehicleReporter.locationTrackingEnabled = YES;
}
@end
Impostare l'intervallo di aggiornamento
Per impostazione predefinita, quando imposti locationTrackingEnabled
su true
, l'SDK Driver
invia aggiornamenti della corsa e del veicolo a Fleet Engine a intervalli di 10 secondi. Puoi
modifica l'intervallo di aggiornamento con locationUpdateInterval
impostandolo su un aggiornamento minimo
intervallo di 5 secondi o un massimo di 60 secondi. Aggiornamenti più frequenti possono
il che comporta richieste ed errori più lenti.
Imposta lo stato del veicolo su online
Dopo aver attivato gli aggiornamenti di posizione, imposta lo stato del veicolo su ONLINE
per
veicolo disponibile per le query di ricerca in Fleet Engine.
I seguenti esempi mostrano come impostare lo stato del veicolo su ONLINE
. Per
vedi updateVehicleState
.
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.
ridesharingDriverAPI.vehicleReporter.update(.online)
}
}
Objective-C
#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.
[ridesharingDriverAPI.vehicleReporter
updateVehicleState:GMTDVehicleStateOnline];
}
@end