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
Nach dem Initialisieren des Driver SDK und dem Erstellen eines GMTDRidesharingDriverAPI
können Sie Event-Listener einrichten, um den Erfolg oder Misserfolg eines
an Fleet Engine und Ihr Backend gesendet. 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 Treiber Standortupdates in der Treiber-App aktiviert, wird das Driver SDK
regelmäßig Fahrzeugaktualisierungen an Fleet Engine und den Kunden.
Back-End über die Klasse GMTDVehicleReporter
. Sie können festlegen, dass die App auf Aktualisierungsereignisse reagiert, indem 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 Listener, dass ein Fahrzeugupdate fehlgeschlagen ist. Solange der Fahrer Standortaktualisierungen aktiviert hat, sendet die
GMTDVehicleReporter
-Klasse weiterhin die neuesten Daten an die Fleet Engine.
Die folgenden Beispiele zeigen, wie Sie GMTDVehicleReporterListener
so einrichten, dass
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.
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 Updates zum Fahrzeugstandort warten
Das Navigation SDK stellt Standortupdates für das Driver SDK über die
Klasse GMSRoadSnappedLocationProvider
. Um diese Aktualisierungen zu erhalten, müssen Sie
GMTDVehicleReporter
als Zuhörer hoch.
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
Um Standortaktualisierungen zu aktivieren, stelle locationTrackingEnabled
auf true
ein.
GMTDVehicleReporter
in der Treiber-App. Dann ist die Klasse GMTDVehicleReporter
automatisch Standortaktualisierungen an 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. Bis
Korrekte Standortaktualisierungen erhalten; Wegpunkt in setDestinations
entsprechend festlegen
das Ziel in Fleet Engine.
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
führen zu langsameren Anfragen und Fehlern.
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.
Die folgenden Beispiele zeigen, wie der Fahrzeugstatus auf ONLINE
gesetzt wird. Für
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