En esta sección, se muestra cómo preparar el vehículo para los viajes. Debes completar cada uno de los siguientes pasos antes de que tu backend pueda hacer coincidir un vehículo con un viaje.
Configura objetos de escucha
Después de inicializar el SDK del controlador y crear un GMTDRidesharingDriverAPI
puedes configurar objetos de escucha de eventos para supervisar el éxito o el fracaso de
y las actualizaciones del vehículo enviadas
a Fleet Engine y a tu backend. Estos objetos de escucha pueden
activar acciones dentro de tu app de conductor, como notificar al conductor si
la comunicación con tu backend falla.
Cómo detectar eventos de actualización de vehículos
Cuando el conductor habilita las actualizaciones de ubicación en la app, el SDK del controlador
envía actualizaciones periódicas del vehículo a Fleet Engine y al cliente
backend a través de la clase GMTDVehicleReporter
. Puedes hacer que la app responda
Para actualizar eventos, configura el protocolo GMTDVehicleReporterListener
.
Con GMTDVehicleReporterListener
, puedes controlar los siguientes eventos:
vehicleReporter:didSucceedVehicleUpdate
Informa a la app del controlador que los servicios de backend recibieron correctamente el la ubicación del vehículo y la actualización de estado.
vehicleReporter:didFailVehicleUpdate:withError
Informa al objeto de escucha que falló una actualización del vehículo. Siempre y cuando el conductor haya las actualizaciones de ubicación habilitadas, la clase
GMTDVehicleReporter
seguirá enviando los datos más recientes a Fleet Engine.
En los siguientes ejemplos, se muestra cómo configurar GMTDVehicleReporterListener
para
manejar estos eventos:
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
Cómo detectar actualizaciones de la ubicación del vehículo
El SDK de Navigation proporciona actualizaciones de ubicación al SDK de Driver a través de la
Clase GMSRoadSnappedLocationProvider
. Para recibir esas actualizaciones, debes configurar
hasta el GMTDVehicleReporter
como objeto de escucha.
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
Cómo habilitar las actualizaciones de ubicación
Para habilitar las actualizaciones de ubicación, activa locationTrackingEnabled
en true
GMTDVehicleReporter
en la app del controlador. Luego, la clase GMTDVehicleReporter
envía automáticamente actualizaciones de ubicación a Fleet Engine. Después de que Fleet Engine y
servicios de backend del cliente coinciden y asignan el vehículo a un viaje, el
La clase GMTDVehicleReporter
envía actualizaciones de ruta automáticamente cuando
GMSNavigator
está en modo de navegación, que es cuando un destino se establece a través de
setDestinations
El SDK del controlador configura la ruta para que coincida con la ruta de navegación actual del conductor. Para
garantiza actualizaciones de ubicación precisas, establece el punto de referencia en setDestinations
para que coincida
el destino en Fleet Engine.
En el siguiente ejemplo, se muestra cómo habilitar las actualizaciones de ubicación:
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
Cómo establecer el intervalo de actualización
De forma predeterminada, cuando estableces locationTrackingEnabled
en true
, el SDK de Driver
envía actualizaciones de viajes y vehículos a Fleet Engine en intervalos de 10 segundos. Puedes
Cambia el intervalo de actualización con locationUpdateInterval
a una actualización mínima.
de 5 segundos o un máximo de 60 segundos. Es posible que las actualizaciones más frecuentes
generan solicitudes y errores más lentos.
Establece el estado del vehículo en En línea
Después de habilitar las actualizaciones de ubicación, establece el estado del vehículo en ONLINE
para que se
vehículo disponible para las búsquedas en Fleet Engine.
En los siguientes ejemplos, se muestra cómo establecer el estado del vehículo en ONLINE
. Para
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