Prepara il veicolo

Questa sezione mostra come preparare il veicolo per i viaggi. Prima che il backend possa abbinare un veicolo a un viaggio, devi completare tutti i passaggi riportati di seguito.

Configurare i listener

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

Ascoltare gli eventi di aggiornamento del veicolo

Quando il conducente attiva gli aggiornamenti della posizione nell'app per conducenti, l'SDK Driver invia aggiornamenti regolari del veicolo a Fleet Engine e al backend del cliente tramite la classe GMTDVehicleReporter. 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

    Informa l'app per conducenti 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 è andato a buon fine. Finché il conducente ha attivato gli aggiornamenti della posizione, la classe GMTDVehicleReporter continua a inviare i dati più recenti a Fleet Engine.

Gli esempi riportati di seguito mostrano 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.
    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

Ascoltare gli aggiornamenti della posizione del veicolo

L'SDK Navigation fornisce aggiornamenti della posizione all'SDK Driver tramite la classe GMSRoadSnappedLocationProvider. Per ricevere questi aggiornamenti, devi configurare GMTDVehicleReporter come listener.

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

Attivare gli aggiornamenti della posizione

Per attivare gli aggiornamenti della posizione, imposta locationTrackingEnabled su true in GMTDVehicleReporter nell'app per conducenti. La classe GMTDVehicleReporter invia automaticamente gli aggiornamenti della posizione a Fleet Engine. Dopo che i servizi di backend di Fleet Engine e del cliente hanno abbinato e assegnato il veicolo a un viaggio, la classe GMTDVehicleReporter invia automaticamente gli aggiornamenti del percorso quando GMSNavigator è in modalità di navigazione, ovvero quando una destinazione viene impostata tramite setDestinations.

L'SDK Driver imposta il percorso in modo che corrisponda al percorso di navigazione attuale del conducente. Per garantire aggiornamenti della posizione precisi, imposta il waypoint in setDestinations 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.
    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

Impostare l'intervallo di aggiornamento

Per impostazione predefinita, quando imposti locationTrackingEnabled su true, l'SDK Driver invia aggiornamenti di viaggi e veicoli a Fleet Engine a un intervallo di 10 secondi. Puoi modificare l'intervallo di aggiornamento con locationUpdateInterval a un intervallo di aggiornamento minimo di 5 secondi o massimo di 60 secondi. Aggiornamenti più frequenti potrebbero comportare richieste più lente ed errori.

Impostare lo stato del veicolo su online

Dopo aver attivato gli aggiornamenti della posizione, imposta lo stato del veicolo su ONLINE per renderlo disponibile per le query di ricerca in Fleet Engine.

Gli esempi seguenti mostrano come impostare lo stato del veicolo su ONLINE. Per i dettagli, 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

Passaggi successivi

Impostare i dettagli del viaggio