En esta sección, se muestra cómo preparar el vehículo para los viajes. Debes completar cada uno de los siguientes pasos para 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 una instancia de GMTDRidesharingDriverAPI, puedes configurar objetos de escucha de eventos para supervisar el éxito o el fracaso de las actualizaciones del vehículo enviadas a Fleet Engine y a tu backend. Estos objetos de escucha pueden activar acciones en tu app para conductores, como notificar al conductor si falla la comunicación con tu backend.
Detecta eventos de actualización del vehículo
Cuando el conductor habilita las actualizaciones de ubicación en la app para conductores, el SDK del controlador envía actualizaciones periódicas del vehículo a Fleet Engine y al backend del cliente a través de la clase GMTDVehicleReporter. Puedes hacer que la app responda a los eventos de actualización configurando el protocolo GMTDVehicleReporterListener.
Con GMTDVehicleReporterListener, puedes controlar los siguientes eventos:
vehicleReporter:didSucceedVehicleUpdateInforma a la app para conductores que los servicios de backend recibieron correctamente la ubicación y la actualización del estado del vehículo.
vehicleReporter:didFailVehicleUpdate:withErrorInforma al objeto de escucha que falló una actualización del vehículo. Mientras el conductor tenga habilitadas las actualizaciones de ubicación, la clase
GMTDVehicleReporterseguirá enviando los datos más recientes a Fleet Engine.
En los siguientes ejemplos, se muestra cómo configurar GMTDVehicleReporterListener para controlar 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
Detecta actualizaciones de ubicación del vehículo
El SDK de Navigation proporciona actualizaciones de ubicación al SDK del controlador a través de la clase GMSRoadSnappedLocationProvider. Para recibir esas actualizaciones, debes configurar 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
Habilita las actualizaciones de ubicación
Para habilitar las actualizaciones de ubicación, establece locationTrackingEnabled en true en GMTDVehicleReporter en la app para conductores. Luego, la clase GMTDVehicleReporter envía automáticamente actualizaciones de ubicación a Fleet Engine. Después de que los servicios de Fleet Engine y el backend del cliente coinciden y asignan el vehículo a un viaje, la clase GMTDVehicleReporter envía actualizaciones de ruta automáticamente cuando GMSNavigator está en modo de navegación, es decir, cuando se establece un destino a través de setDestinations.
El SDK del controlador establece la ruta para que coincida con la ruta de navegación actual del conductor. Para garantizar actualizaciones de ubicación precisas, establece el waypoint en setDestinations para que coincida con 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
Establece el intervalo de actualización
De forma predeterminada, cuando estableces locationTrackingEnabled en true, el SDK del controlador envía actualizaciones de viajes y vehículos a Fleet Engine en un intervalo de 10 segundos. Puedes cambiar el intervalo de actualización con locationUpdateInterval a un intervalo de actualización mínimo de 5 segundos o un máximo de 60 segundos. Las actualizaciones más frecuentes pueden generar solicitudes y errores más lentos.
Establece el estado del vehículo en línea
Después de habilitar las actualizaciones de ubicación, establece el estado del vehículo en ONLINE para que esté disponible para las consultas de búsqueda en Fleet Engine.
En los siguientes ejemplos, se muestra cómo establecer el estado del vehículo en ONLINE. Para
obtener más detalles, 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
¿Qué sigue?
Establece los detalles del viaje