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 Fahrzeugupdates zu überwachen, die an Fleet Engine und Ihr Back-End gesendet werden. Diese Listener können Aktionen innerhalb Ihrer Treiber-App auslösen, z. B. den Treiber benachrichtigen, wenn die Kommunikation mit Ihrem Back-End fehlschlägt.

Auf Fahrzeug-Update-Ereignisse warten

Wenn der Fahrer Standortaktualisierungen in der Fahrer-App aktiviert, sendet das Driver SDK über die Klasse GMTDDeliveryVehicleReporter regelmäßige Fahrzeugaktualisierungen an Fleet Engine und das Kunden-Backend. Wenn die App auf Update-Ereignisse reagieren soll, müssen Sie das GMTDVehicleReporterListener-Protokoll einrichten.

Mit GMTDVehicleReporterListener können Sie die folgenden Ereignisse verarbeiten:

  • vehicleReporter:didSucceedVehicleUpdate

    Informiert die Fahrer-App darüber, dass die Back-End-Dienste den Standort und Status des Fahrzeugs erfolgreich empfangen haben.

  • vehicleReporter:didFailVehicleUpdate:withError

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

Das folgende Beispiel zeigt, wie GMTDVehicleReporterListener für die Verarbeitung dieser Ereignisse eingerichtet wird:

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

Setze zum Aktivieren von Standortupdates in der Fahrer-App auf GMTDDeliveryVehicleReporter locationTrackingEnabled auf YES. Anschließend sendet die GMTDDeliveryVehicleReporter-Klasse automatisch Standortaktualisierungen an die Fleet Engine. Wenn sich der GMSNavigator im Navigationsmodus befindet, also wenn ein Ziel über setDestinations festgelegt wird, sendet die GMTDDeliveryVehicleReporter-Klasse automatisch Aktualisierungen der Route und der voraussichtlichen Ankunftszeit.

Das Driver SDK legt die Route so fest, dass sie dem aktuellen Navigationspfad des Fahrers entspricht. Damit der Standort korrekt aktualisiert wird, müssen Sie den Wegpunkt in -setDestinations:callback: so festlegen, dass er mit dem Ziel in Fleet Engine übereinstimmt.

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.
    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 setzen, sendet das Driver SDK standardmäßig Standortaktualisierungen in 10-Sekunden-Intervallen an Fleet Engine. Sie können das Aktualisierungsintervall mit locationUpdateInterval auf ein minimales Aktualisierungsintervall von 5 Sekunden oder maximal 60 Sekunden ändern. Häufigere Aktualisierungen können zu langsameren Anfragen und Fehlern führen.