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 de vehículos que se envían 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 controlador 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 backend del cliente a través del
Clase GMTDDeliveryVehicleReporter
. Puedes hacer que la app responda para la actualización
a través de la configuración del 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 no se pudo actualizar un vehículo. Siempre y cuando el conductor haya las actualizaciones de ubicación habilitadas, la clase
GMTDDeliveryVehicleReporter
continúa para enviar los datos más recientes a Fleet Engine.
En el siguiente ejemplo, 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.
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
Cómo habilitar las actualizaciones de ubicación
Para habilitar las actualizaciones de ubicación, en la app del conductor, activa
GMTDDeliveryVehicleReporter
, establecer locationTrackingEnabled
como
YES
Luego, la clase GMTDDeliveryVehicleReporter
envía actualizaciones de ubicación automáticamente a Fleet Engine. Además, cuando GMSNavigator
esté en el modo de navegación,
es cuando un destino se establece a través de setDestinations
, el
La clase GMTDDeliveryVehicleReporter
envía actualizaciones de la ruta y la hora de llegada automáticamente.
El SDK del controlador configura la ruta para que coincida con la ruta de navegación actual del conductor. Para
para garantizar actualizaciones de ubicación precisas, establece el punto de referencia 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
Cómo establecer el intervalo de actualización (opcional)
De forma predeterminada, cuando estableces locationTrackingEnabled
en YES
, el SDK del controlador envía actualizaciones de ubicación a Fleet Engine en un intervalo de 10 segundos. Puedes cambiar
el intervalo de actualización con locationUpdateInterval
en un intervalo de actualización mínimo
de 5 segundos o un máximo de 60. Las actualizaciones más frecuentes pueden generar
solicitudes y errores más lentos.