In diesem Abschnitt wird beschrieben, wie Sie das Fahrzeug für Fahrten vorbereiten. Sie müssen jeden der folgenden Schritte ausführen, bevor Ihr Backend ein Fahrzeug einer Fahrt zuordnen kann.
Listener einrichten
Nachdem Sie das Driver SDK initialisiert und eine GMTDRidesharingDriverAPI
-Instanz erstellt haben, können Sie Event-Listener einrichten, um den Erfolg oder Misserfolg von Fahrzeugaktualisierungen zu überwachen, die an 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 GMTDVehicleReporter
regelmäßig Fahrzeugaktualisierungen an Fleet Engine und das Kunden-Backend. Sie können die App auf Aktualisierungsereignisse reagieren lassen, indem Sie das GMTDVehicleReporterListener
-Protokoll einrichten.
Mit GMTDVehicleReporterListener
können Sie die folgenden Ereignisse verarbeiten:
vehicleReporter:didSucceedVehicleUpdate
Informiert die Fahrer-App darüber, dass die Backend-Dienste die Aktualisierung des Fahrzeugstandorts und -status erfolgreich empfangen haben.
vehicleReporter:didFailVehicleUpdate:withError
Informiert den Listener darüber, dass ein Fahrzeugupdate fehlgeschlagen ist. Solange der Fahrer Standortaktualisierungen aktiviert hat, sendet die
GMTDVehicleReporter
-Klasse weiterhin die neuesten Daten an Fleet Engine.
Die folgenden Beispiele zeigen, 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.
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 Aktualisierungen des Fahrzeugstandorts warten
Das Navigation SDK stellt dem Driver SDK über die Klasse GMSRoadSnappedLocationProvider
Standortaktualisierungen zur Verfügung. Damit Sie diese Updates erhalten, müssen Sie GMTDVehicleReporter
als Listener 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.
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
Wenn Sie Standortaktualisierungen aktivieren möchten, legen Sie locationTrackingEnabled
in der Fahrer-App auf true
fest. Die Klasse GMTDVehicleReporter
sendet dann automatisch Standortaktualisierungen an Fleet Engine.GMTDVehicleReporter
Nachdem die Fleet Engine- und Kunden-Backend-Dienste das Fahrzeug einem Trip zugeordnet haben, sendet die Klasse GMTDVehicleReporter
automatisch Routenaktualisierungen, wenn sich GMSNavigator
im Navigationsmodus befindet. Das ist der Fall, wenn ein Ziel über setDestinations
festgelegt wird.
Mit dem Driver SDK wird die Route so festgelegt, dass sie dem aktuellen Navigationspfad des Fahrers entspricht. Damit Standortaktualisierungen genau sind, muss der Wegpunkt in setDestinations
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.
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 minimales Aktualisierungsintervall von 5 Sekunden oder ein maximales von 60 Sekunden ändern. Häufigere Aktualisierungen können zu langsameren Anfragen und Fehlern führen.
Fahrzeugstatus auf „Online“ setzen
Nachdem Sie 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. 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