Empfänger einrichten
Nachdem Sie das Driver SDK initialisiert und eine GMTDDeliveryDriverAPI
-Instanz erstellt haben, können Sie Ereignisempfänger 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 Klasse GMTDDeliveryVehicleReporter
regelmäßig Fahrzeugaktualisierungen an die Fleet Engine und das Kunden-Back-End. Sie können die App so konfigurieren, 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 Back-End-Dienste die Aktualisierung des Fahrzeugstandorts und -status erfolgreich erhalten haben.
vehicleReporter:didFailVehicleUpdate:withError
Informiert den Nutzer darüber, dass ein Fahrzeugupdate fehlgeschlagen ist. Solange der Fahrer Standortaktualisierungen aktiviert hat, sendet die
GMTDDeliveryVehicleReporter
-Klasse weiterhin die neuesten Daten an die Fleet Engine.
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
Wenn Sie Standortaktualisierungen aktivieren möchten, legen Sie in der Fahrer App auf GMTDDeliveryVehicleReporter
den Wert locationTrackingEnabled
auf YES
fest. Anschließend sendet die GMTDDeliveryVehicleReporter
-Klasse automatisch Standortaktualisierungen an die Fleet Engine. Wenn sich die GMSNavigator
im Navigationsmodus befindet, also wenn ein Ziel über setDestinations
festgelegt wird, sendet die GMTDDeliveryVehicleReporter
-Klasse automatisch Routen- und ETA-Updates.
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: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 die Fleet Engine. Sie können das Aktualisierungsintervall mit locationUpdateInterval
auf ein Minimum von 5 Sekunden oder ein Maximum von 60 Sekunden festlegen. Häufigere Aktualisierungen können zu langsameren Anfragen und Fehlern führen.