Configura objetos de escucha
Después de inicializar el SDK de Driver y crear una instancia de GMTDDeliveryDriverAPI, puedes configurar objetos de escucha de eventos para supervisar el éxito o el fracaso de las actualizaciones del vehículo que se envían 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 de Driver envía
actualizaciones periódicas del vehículo a Fleet Engine y al backend del cliente a través de la
GMTDDeliveryVehicleReporter clase. 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
GMTDDeliveryVehicleReporterseguirá enviando los datos más recientes a Fleet Engine.
En el siguiente ejemplo, 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.
deliveryDriverAPI.vehicleReporter.add(self)
}
func vehicleReporter(_ vehicleReporter: GMTDDeliveryVehicleReporter, didSucceed vehicleUpdate: GMTDVehicleUpdate) {
// Handle update succeeded.
}
func vehicleReporter(_ vehicleReporter: GMTDDeliveryVehicleReporter, 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 IMPLEMENTED HAVE THE SAMPLE CODE UP TO THIS STEP.
[delivervehicleReporter addListener:self];
}
- (void)vehicleReporter:(GMTDDeliveryVehicleReporter *)vehicleReporter didSucceedVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate {
// Handle update succeeded.
}
- (void)vehicleReporter:(GMTDDeliveryVehicleReporter *)vehicleReporter didFailVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate withError:(NSError *)error {
// Handle update failed.
}
@end
Habilita las actualizaciones de ubicación
Para habilitar las actualizaciones de ubicación, en la app para conductores en
GMTDDeliveryVehicleReporter, establece locationTrackingEnabled en
YES. Luego, la clase
GMTDDeliveryVehicleReporter envía automáticamente actualizaciones de ubicación a
Fleet Engine. Además, cuando GMSNavigator está en modo de navegación, que
es cuando se establece un destino a través de setDestinations, la
GMTDDeliveryVehicleReporter clase envía automáticamente actualizaciones de ruta y ETA.
El SDK de Driver establece la ruta para que coincida con la ruta de navegación actual del conductor. Para
garantizar actualizaciones de ubicación precisas, establece el punto de ruta en
-setDestinations:callback: 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.
deliveryDriverAPI.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.
deliveryDriverAPI.vehicleReporter.locationTrackingEnabled = YES;
}
@end
Establece el intervalo de actualización (opcional)
De forma predeterminada, cuando estableces locationTrackingEnabled en YES, el SDK de Driver
envía actualizaciones de ubicación 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 más lentas y errores.