Prepara il veicolo

Configura i listener

Dopo aver inizializzato l'SDK Driver e creato un'istanza GMTDDeliveryDriverAPI, puoi configurare ascoltatori di eventi per monitorare il buon esito o l'errore degli aggiornamenti dei veicoli inviati a Fleet Engine e al tuo backend. Questi ascoltatori possono attivare azioni all'interno dell'app del conducente, ad esempio inviare una notifica al conducente se la comunicazione con il backend non va a buon fine.

Ascolta gli eventi di aggiornamento del veicolo

Quando il conducente attiva gli aggiornamenti della posizione nell'app del conducente, l'SDK Driver invia aggiornamenti regolari del veicolo a Fleet Engine e al backend del cliente tramite la classe GMTDDeliveryVehicleReporter. Puoi fare in modo che l'app risponda agli eventi di aggiornamento configurando il protocollo GMTDVehicleReporterListener.

Con GMTDVehicleReporterListener, puoi gestire i seguenti eventi:

  • vehicleReporter:didSucceedVehicleUpdate

    Comunica all'app Driver che i servizi di backend hanno ricevuto correttamente l'aggiornamento della posizione e dello stato del veicolo.

  • vehicleReporter:didFailVehicleUpdate:withError

    Informa il listener che un aggiornamento del veicolo non è riuscito. Finché il conducente ha abilitato gli aggiornamenti della posizione, la classe GMTDDeliveryVehicleReporter continua a inviare i dati più recenti a Fleet Engine.

Il seguente esempio mostra come configurare GMTDVehicleReporterListener per gestire questi eventi:

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

Attivare gli aggiornamenti della posizione

Per attivare gli aggiornamenti della posizione, nell'app del conducente su GMTDDeliveryVehicleReporter, imposta locationTrackingEnabled su YES. Quindi, la classe GMTDDeliveryVehicleReporter invia automaticamente gli aggiornamenti della posizione a Fleet Engine. Inoltre, quando GMSNavigator è in modalità di navigazione, ovvero quando viene impostata una destinazione tramite setDestinations, la classe GMTDDeliveryVehicleReporter invia automaticamente aggiornamenti su percorso e orario di arrivo stimato.

L'SDK Driver imposta il percorso in modo che corrisponda al percorso di navigazione corrente del conducente. Per assicurarti aggiornamenti della posizione accurati, imposta il waypoint in -setDestinations:callback: in modo che corrisponda alla destinazione in Fleet Engine.

L'esempio seguente mostra come attivare gli aggiornamenti della posizione:

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

(Facoltativo) Impostare l'intervallo di aggiornamento

Per impostazione predefinita, quando imposti locationTrackingEnabled su YES, l'SDK Driver invia gli aggiornamenti della posizione a Fleet Engine a un intervallo di 10 secondi. Puoi modificare l'intervallo di aggiornamento con locationUpdateInterval impostandolo su un intervallo minimo di 5 secondi o su un intervallo massimo di 60 secondi. Aggiornamenti più frequenti possono comportare richieste più lente ed errori.