Fahrzeug vorbereiten

Hörer 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 die Fleet Engine und Ihr Backend gesendet werden. Diese Hörer können Aktionen in Ihrer Fahrer-App auslösen, z. B. eine Benachrichtigung des Fahrers, Kommunikation mit Ihrem Backend schlägt fehl.

Auf Fahrzeugaktualisierungsereignisse 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. Die App kann auf Updates reagieren Ereignisse durch Einrichten des GMTDVehicleReporterListener-Protokolls.

Mit GMTDVehicleReporterListener kannst du die folgenden Ereignisse verarbeiten:

  • vehicleReporter:didSucceedVehicleUpdate

    Informiert die Treiber-App, dass die Backend-Dienste das Ereignis Aktualisierung von Fahrzeugstandort und Fahrzeugstatus.

  • vehicleReporter:didFailVehicleUpdate:withError

    Informiert den Listener, dass ein Fahrzeugupdate fehlgeschlagen ist. Solange der Fahrer Standortaktualisierungen aktiviert, die Klasse GMTDDeliveryVehicleReporter wird fortgesetzt um die neuesten Daten an die Fleet Engine zu senden.

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

Um Standortupdates zu aktivieren, in der Treiber-App auf GMTDDeliveryVehicleReporter, locationTrackingEnabled festlegen auf YES Dann GMTDDeliveryVehicleReporter-Kurs sendet automatisch Standortaktualisierungen an Fleet Engine Wenn sich der GMSNavigator im Navigationsmodus befindet, was wenn ein Ziel über setDestinations festgelegt wird, gilt der Die Klasse „GMTDDeliveryVehicleReporter“ sendet automatisch Routeninformationen und voraussichtliche Ankunftszeiten.

Das Driver SDK legt die Route so fest, dass sie dem aktuellen Navigationspfad des Fahrers entspricht. Bis korrekte Standortupdates zu erhalten, den Wegpunkt in der -setDestinations:callback:, um das Ziel in Fleet Engine abzugleichen.

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, wird das Driver SDK standardmäßig sendet Standortaktualisierungen in Intervallen von 10 Sekunden an Fleet Engine. Mit locationUpdateInterval können Sie das Aktualisierungsintervall 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.