Prepara el vehículo

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 vincular un vehículo a 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 para conductores, como notificarle al conductor si falla la comunicación con tu backend.

Cómo detectar eventos de actualización de vehículos

Cuando el conductor habilita las actualizaciones de ubicación en la app para conductores, el SDK de Driver envía actualizaciones de vehículos regulares a Fleet Engine y al backend del cliente a través de la clase GMTDVehicleReporter. Puedes configurar el protocolo GMTDVehicleReporterListener para que la app responda a los eventos de actualización.

Con GMTDVehicleReporterListener, puedes controlar los siguientes eventos:

  • vehicleReporter:didSucceedVehicleUpdate

    Informa a la app de Conductor que los servicios de backend recibieron correctamente la actualización de estado y ubicación del vehículo.

  • 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 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

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.

Cómo establecer el estado del vehículo como 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 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

¿Qué sigue?

Configura los detalles del viaje