W tej sekcji dowiesz się, jak przygotować pojazd do przejazdów. Zanim backend będzie mógł dopasować pojazd do przejazdu, musisz wykonać wszystkie te czynności.
Konfigurowanie detektorów
Po zainicjowaniu pakietu Driver SDK i utworzeniu GMTDRidesharingDriverAPIinstancji możesz skonfigurować detektory zdarzeń, aby monitorować powodzenie lub niepowodzenie aktualizacji pojazdu wysyłanych do Fleet Engine i Twojego backendu. Te odbiorniki mogą wywoływać działania w aplikacji dla kierowców, np. powiadamiać kierowcę, jeśli komunikacja z backendem się nie powiedzie.
Nasłuchiwanie zdarzeń aktualizacji pojazdu
Gdy kierowca włączy aktualizacje lokalizacji w aplikacji dla kierowców, pakiet Driver SDK będzie regularnie wysyłać aktualizacje pojazdu do Fleet Engine i backendu klienta za pomocą klasy GMTDVehicleReporter. Możesz skonfigurować protokół GMTDVehicleReporterListener, aby aplikacja reagowała na zdarzenia aktualizacji.
Za pomocą GMTDVehicleReporterListener możesz obsługiwać te zdarzenia:
vehicleReporter:didSucceedVehicleUpdateInformuje aplikację kierowcy, że usługi backendu otrzymały aktualizację lokalizacji i stanu pojazdu.
vehicleReporter:didFailVehicleUpdate:withErrorInformuje odbiorcę, że aktualizacja pojazdu nie powiodła się. Dopóki kierowca ma włączone aktualizacje lokalizacji, klasa
GMTDVehicleReporterbędzie nadal wysyłać najnowsze dane do Fleet Engine.
Poniższe przykłady pokazują, jak skonfigurować GMTDVehicleReporterListener do obsługi tych zdarzeń:
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
Nasłuchiwanie aktualizacji lokalizacji pojazdu
Pakiet SDK do nawigacji przekazuje aktualizacje lokalizacji do pakietu SDK kierowcy za pomocą klasy GMSRoadSnappedLocationProvider. Aby otrzymywać te aktualizacje, musisz skonfigurować GMTDVehicleReporter jako odbiorcę.
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
Włączanie aktualizacji lokalizacji
Aby włączyć aktualizacje lokalizacji, ustaw w aplikacji kierowcy wartość locationTrackingEnabled na true w przypadku GMTDVehicleReporter. Klasa GMTDVehicleReporter automatycznie wysyła aktualizacje lokalizacji do Fleet Engine. Gdy usługi Fleet Engine i backend klienta dopasują i przypiszą pojazd do przejazdu, klasa GMTDVehicleReporter automatycznie wysyła aktualizacje trasy, gdy GMSNavigator jest w trybie nawigacji, czyli gdy miejsce docelowe jest ustawione za pomocą setDestinations.
Pakiet Driver SDK ustawia trasę tak, aby pasowała do bieżącej ścieżki nawigacji kierowcy. Aby zapewnić dokładne aktualizacje lokalizacji, ustaw punkt pośredni w setDestinations tak, aby pasował do miejsca docelowego w Fleet Engine.
Poniższy przykład pokazuje, jak włączyć aktualizacje lokalizacji:
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
Ustawianie interwału aktualizacji
Domyślnie, gdy ustawisz wartość locationTrackingEnabled na true, pakiet Driver SDK wysyła aktualizacje podróży i pojazdu do Fleet Engine co 10 sekund. Możesz zmienić interwał aktualizacji za pomocą locationUpdateInterval na minimum 5 sekund lub maksimum 60 sekund. Częstsze aktualizacje mogą powodować wolniejsze działanie i błędy.
Ustawianie stanu pojazdu na online
Po włączeniu aktualizacji lokalizacji ustaw stan pojazdu na ONLINE, aby udostępnić pojazd w zapytaniach wyszukiwania w Fleet Engine.
Poniższe przykłady pokazują, jak ustawić stan pojazdu na ONLINE. Więcej informacji znajdziesz w sekcji 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