Fahrzeug vorbereiten

In diesem Abschnitt erfahren Sie, wie Sie das Fahrzeug für Fahrten vorbereiten. Sie müssen alle folgenden Schritte ausführen, damit Ihr Backend ein Fahrzeug einer Fahrt zuordnen kann.

Listener einrichten

Nachdem Sie das Driver SDK initialisiert und eine GMTDRidesharingDriverAPI-Instanz erstellt haben, können Sie Ereignis-Listener einrichten, um den Erfolg oder Misserfolg von Fahrzeugupdates zu überwachen, die an die Fleet Engine und Ihr Backend gesendet werden. Diese Listener können Aktionen in Ihrer Fahrer-App auslösen, z. B. den Fahrer benachrichtigen, wenn die Kommunikation mit Ihrem Backend fehlschlägt.

Auf Fahrzeugaktualisierungsereignisse warten

Wenn der Fahrer Standortaktualisierungen in der Fahrer App aktiviert, sendet das Driver SDK über die GMTDVehicleReporter-Klasse regelmäßige Fahrzeugaktualisierungen an die Fleet Engine und das Kunden-Backend. Sie können die App so einrichten, dass sie auf Aktualisierungsereignisse reagiert. Dazu müssen Sie das GMTDVehicleReporterListener-Protokoll einrichten.

Mit GMTDVehicleReporterListener kannst du die folgenden Ereignisse verarbeiten:

  • vehicleReporter:didSucceedVehicleUpdate

    Informiert die Fahrer App darüber, dass die Backend-Dienste die Aktualisierung des Fahrzeugstandorts und -status erfolgreich erhalten haben.

  • vehicleReporter:didFailVehicleUpdate:withError

    Informiert den Hörer darüber, dass eine Fahrzeugaktualisierung fehlgeschlagen ist. Solange der Fahrer Standortaktualisierungen aktiviert hat, sendet die GMTDVehicleReporter-Klasse weiterhin die neuesten Daten an die Fleet Engine.

In den folgenden Beispielen wird gezeigt, wie Sie GMTDVehicleReporterListener für die Verarbeitung dieser Ereignisse einrichten:

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

Auf Aktualisierungen des Fahrzeugstandorts warten

Das Navigation SDK stellt dem Driver SDK über die GMSRoadSnappedLocationProvider-Klasse Standortaktualisierungen zur Verfügung. Damit Sie diese Updates erhalten, müssen Sie die GMTDVehicleReporter als Listener einrichten.

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

Standortaktualisierungen aktivieren

Wenn Sie Standortaktualisierungen aktivieren möchten, legen Sie in der Fahrer App unter GMTDVehicleReporter die Option locationTrackingEnabled auf true fest. Die GMTDVehicleReporter-Klasse sendet dann automatisch Standortaktualisierungen an die Fleet Engine. Nachdem die Fleet Engine und die Kunden-Back-End-Dienste übereinstimmen und das Fahrzeug einer Fahrt zugewiesen haben, sendet die GMTDVehicleReporter-Klasse automatisch Routenaktualisierungen, wenn sich die GMSNavigator im Navigationsmodus befindet, also wenn ein Ziel über setDestinations festgelegt wird.

Das Driver SDK legt die Route so fest, dass sie dem aktuellen Navigationspfad des Fahrers entspricht. Damit die Standortaktualisierungen korrekt sind, muss der Wegpunkt in setDestinations mit dem Ziel in der Fleet Engine übereinstimmen.

Im folgenden Beispiel wird gezeigt, wie Sie Standortaktualisierungen aktivieren:

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

Aktualisierungsintervall festlegen

Wenn Sie locationTrackingEnabled auf true festlegen, sendet das Driver SDK standardmäßig alle 10 Sekunden Fahrt- und Fahrzeugupdates an Fleet Engine. Sie können das Aktualisierungsintervall mit locationUpdateInterval auf ein Minimum von 5 Sekunden oder ein Maximum von 60 Sekunden festlegen. Häufigere Updates können zu langsameren Anfragen und Fehlern führen.

Fahrzeugstatus auf „Online“ setzen

Nachdem Sie die Standortaktualisierungen aktiviert haben, legen Sie den Fahrzeugstatus auf ONLINE fest, damit das Fahrzeug für Suchanfragen in Fleet Engine verfügbar ist.

In den folgenden Beispielen wird gezeigt, wie der Fahrzeugstatus auf ONLINE festgelegt wird. Weitere Informationen finden Sie unter 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

Nächste Schritte

Reisedetails festlegen