Fahrzeug vorbereiten

Listener einrichten

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

Auf Fahrzeugaktualisierungsereignisse warten

Wenn der Fahrer in der Fahrer-App Standortaktualisierungen aktiviert, sendet das Driver SDK über die Klasse GMTDDeliveryVehicleReporter regelmäßig Fahrzeugaktualisierungen an Fleet Engine und das Kunden-Back-End. Sie können die App auf Aktualisierungsereignisse reagieren lassen, indem Sie das Protokoll GMTDVehicleReporterListener einrichten.

Mit GMTDVehicleReporterListener können Sie die folgenden Ereignisse verarbeiten:

  • vehicleReporter:didSucceedVehicleUpdate

    Informiert die Fahrer-App, dass die Back-End-Dienste die Aktualisierung des Fahrzeugstandorts und ‑status erfolgreich erhalten haben.

  • vehicleReporter:didFailVehicleUpdate:withError

    Informiert den Listener, dass eine Fahrzeugaktualisierung fehlgeschlagen ist. Solange der Fahrer Standortaktualisierungen aktiviert hat, sendet die Klasse GMTDDeliveryVehicleReporter weiterhin die neuesten Daten an Fleet Engine.

Das folgende Beispiel zeigt, wie Sie GMTDVehicleReporterListener einrichten, um diese Ereignisse zu verarbeiten:

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

Standortaktualisierungen aktivieren

Wenn Sie Standortaktualisierungen aktivieren möchten, legen Sie in der Fahrer-App für GMTDDeliveryVehicleReporter die Option locationTrackingEnabled auf YES fest. Die Klasse GMTDDeliveryVehicleReporter sendet dann automatisch Standortaktualisierungen an Fleet Engine. Wenn sich GMSNavigator im Navigationsmodus befindet, d. h. wenn ein Ziel über setDestinations festgelegt wurde, sendet die Klasse GMTDDeliveryVehicleReporter außerdem automatisch Aktualisierungen zu Route und voraussichtlicher Ankunftszeit.

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

Das folgende Beispiel zeigt, 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.
    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

(Optional) Aktualisierungsintervall festlegen

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