Questa sezione mostra come preparare il veicolo per i viaggi. Devi completare ciascuno dei seguenti passaggi prima che il backend possa associare un veicolo a una corsa.
Configurare gli ascoltatori
Dopo aver inizializzato l'SDK Driver e creato un'istanza GMTDRidesharingDriverAPI
, puoi configurare i listener di eventi per monitorare l'esito positivo o negativo degli aggiornamenti del veicolo inviati a Fleet Engine e al backend. Questi ascoltatori possono attivare azioni all'interno dell'app del conducente, ad esempio inviare una notifica al conducente se la comunicazione con il backend non va a buon fine.
Ascolta gli eventi di aggiornamento del veicolo
Quando il conducente attiva gli aggiornamenti della posizione nell'app del conducente, l'SDK Driver
invia aggiornamenti regolari del veicolo a Fleet Engine e al backend del cliente tramite la classe GMTDVehicleReporter
. Puoi fare in modo che l'app risponda agli eventi di aggiornamento configurando il protocollo GMTDVehicleReporterListener
.
Con GMTDVehicleReporterListener
puoi gestire i seguenti eventi:
vehicleReporter:didSucceedVehicleUpdate
Informa l'app del conducente che i servizi di backend hanno ricevuto correttamente la posizione e l'aggiornamento dello stato del veicolo.
vehicleReporter:didFailVehicleUpdate:withError
Comunica all'utente che l'aggiornamento di un veicolo non è riuscito. Finché il conducente ha attivato gli aggiornamenti della posizione, la classe
GMTDVehicleReporter
continua a inviare i dati più recenti a Fleet Engine.
Gli esempi riportati di seguito 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
Ascoltare gli aggiornamenti sulla posizione del veicolo
L'SDK di navigazione fornisce aggiornamenti della posizione all'SDK del driver tramite la
classe GMSRoadSnappedLocationProvider
. Per ricevere questi aggiornamenti, devi configurare GMTDVehicleReporter
come listener.
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
Attivare gli aggiornamenti della posizione
Per attivare gli aggiornamenti della posizione, imposta locationTrackingEnabled
su true
in
GMTDVehicleReporter
nell'app del conducente. Successivamente, la classe GMTDVehicleReporter
invierà automaticamente aggiornamenti sulla posizione a Fleet Engine. Dopo che Fleet Engine e
i servizi di backend dei clienti corrispondono e hanno assegnato il veicolo a una corsa, la
classe GMTDVehicleReporter
invia automaticamente gli aggiornamenti del percorso 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. Per assicurarti aggiornamenti della posizione precisi, imposta il waypoint in setDestinations
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.
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, se imposti locationTrackingEnabled
su true
, l'SDK Driver invia aggiornamenti sulle corse e sui veicoli a Fleet Engine a intervalli di 10 secondi. Puoi
modificare l'intervallo di aggiornamento con locationUpdateInterval
fino a un intervallo di aggiornamento minimo di 5 secondi o massimo di 60 secondi. Aggiornamenti più frequenti possono causare richieste ed errori più lenti.
Imposta lo stato del veicolo su online
Dopo aver attivato gli aggiornamenti della posizione, imposta lo stato del veicolo su ONLINE
per rendere il veicolo disponibile per le query di ricerca in Fleet Engine.
Gli esempi riportati di seguito mostrano come impostare lo stato del veicolo su ONLINE
. Per
maggiori dettagli, 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