Questa sezione mostra come preparare il veicolo per i percorsi. Devi completare ciascuno dei seguenti passaggi prima che il tuo backend possa abbinare un veicolo a una corsa.
Configura i listener
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 tuo backend. Questi listener possono attivare azioni all'interno dell'app per i conducenti, ad esempio avvisare il 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 per i conducenti, 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:didSucceedVehicleUpdateInforma l'app Driver che i servizi di backend hanno ricevuto correttamente l'aggiornamento della posizione e dello stato del veicolo.
vehicleReporter:didFailVehicleUpdate:withErrorInforma il listener che l'aggiornamento di un veicolo non è riuscito. Se il conducente ha attivato gli aggiornamenti della posizione, la classe
GMTDVehicleReportercontinua 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 Navigation fornisce aggiornamenti sulla posizione all'SDK 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
Attiva gli aggiornamenti della posizione
Per attivare gli aggiornamenti della posizione, imposta locationTrackingEnabled su true su
GMTDVehicleReporter nell'app per i conducenti. In questo modo, la classe GMTDVehicleReporter
invia automaticamente gli aggiornamenti della posizione a Fleet Engine. Dopo che i servizi di backend di Fleet Engine e del cliente hanno abbinato e assegnato il veicolo a una corsa, la classe GMTDVehicleReporter invia automaticamente gli aggiornamenti del percorso quando GMSNavigator è in modalità di navigazione, ovvero quando viene impostata una destinazione tramite setDestinations.
L'SDK Driver imposta il percorso in modo che corrisponda al percorso di navigazione corrente del conducente. Per garantire aggiornamenti precisi della posizione, 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
Imposta l'intervallo di aggiornamento
Per impostazione predefinita, quando imposti locationTrackingEnabled su true, l'SDK Driver invia gli aggiornamenti relativi a corse e veicoli a Fleet Engine a intervalli di 10 secondi. Puoi
modificare l'intervallo di aggiornamento con locationUpdateInterval impostando un intervallo di aggiornamento minimo
di 5 secondi o un intervallo massimo di 60 secondi. Aggiornamenti più frequenti possono comportare richieste più lente ed errori.
Imposta lo stato del veicolo su online
Dopo aver attivato gli aggiornamenti della posizione, imposta lo stato del veicolo su ONLINE per renderlo disponibile per le query di ricerca in Fleet Engine.
I seguenti esempi mostrano come impostare lo stato del veicolo su ONLINE. Per i dettagli, consulta 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
Passaggi successivi
Imposta i dettagli della corsa