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 Ereignis-Listener 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 Fahrzeug-Update-Ereignisse warten
Wenn der Treiber Standortaktualisierungen in der Fahrer-App aktiviert, sendet das Driver SDK regelmäßig Fahrzeugupdates an Fleet Engine und das Kunden-Back-End über die Klasse GMTDVehicleReporter
. Wenn die App auf Update-Ereignisse reagieren soll, 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 Backend-Dienste die Aktualisierung des Fahrzeugstandorts und -status erfolgreich erhalten haben.
vehicleReporter:didFailVehicleUpdate:withError
Informiert den Listener, dass ein Fahrzeugupdate fehlgeschlagen ist. Solange für den Treiber Standortaktualisierungen aktiviert sind, sendet die Klasse
GMTDVehicleReporter
weiterhin die neuesten Daten an Fleet Engine.
Die folgenden Beispiele zeigen, 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.
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 dem Driver SDK über die GMSRoadSnappedLocationProvider
-Klasse Standortaktualisierungen zur Verfügung. Damit Sie diese Updates erhalten, müssen Sie die 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 in der Fahrer App unter GMTDVehicleReporter
die Option locationTrackingEnabled
auf true
fest. Die GMTDVehicleReporter
-Klasse sendet dann automatisch Standortaktualisierungen an die Fleet Engine. Nachdem die Back-End-Dienste von Fleet Engine und Kunden abgeglichen und das Fahrzeug einer Fahrt zugewiesen haben, sendet die Klasse GMTDVehicleReporter
automatisch Routenaktualisierungen, wenn sich GMSNavigator
im Navigationsmodus befindet. Das ist der Fall, wenn ein Ziel über setDestinations
festgelegt wird.
Das Driver SDK legt die Route so fest, dass sie dem aktuellen Navigationspfad des Fahrers entspricht. Damit der Standort korrekt aktualisiert wird, legen Sie den Wegpunkt in setDestinations
so fest, 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.
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
setzen, sendet das Driver SDK standardmäßig alle 10 Sekunden Fahrt- und Fahrzeugaktualisierungen 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 zu langsameren Anfragen und Fehlern führen.
Fahrzeugstatus auf „online“ setzen
Nachdem Sie Standortupdates aktiviert haben, setzen Sie den Fahrzeugstatus auf ONLINE
, um das Fahrzeug für Suchanfragen in Fleet Engine verfügbar zu machen.
In den folgenden Beispielen wird gezeigt, wie der Fahrzeugstatus auf ONLINE
festgelegt 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