Z tej sekcji dowiesz się, jak przygotować pojazd do podróży. Musisz wykonać: wykonać każdy z poniższych kroków, zanim system backendu będzie mógł dopasować pojazd do podróży.
Skonfiguruj detektory
Po zainicjowaniu pakietu Driver SDK i utworzeniu GMTDRidesharingDriverAPI
można skonfigurować detektory zdarzeń, aby monitorować powodzenie lub niepowodzenie
aktualizacje pojazdów wysyłane do Fleet Engine i Twojego backendu. Tacy słuchacze mogą
uruchamiać działania w aplikacji kierowcy, np. powiadamiać kierowcę, że
nie można połączyć się z backendem.
Nasłuchuj zdarzeń dotyczących aktualizacji pojazdu
Gdy sterownik włączy aktualizacje lokalizacji w aplikacji sterownika, pakiet Driver SDK
wysyła regularne informacje o pojazdach do Fleet Engine i klienta
za pomocą klasy GMTDVehicleReporter
. Aplikacja może reagować
, aby aktualizować zdarzenia przez skonfigurowanie protokołu GMTDVehicleReporterListener
.
GMTDVehicleReporterListener
umożliwia obsługę tych zdarzeń:
vehicleReporter:didSucceedVehicleUpdate
Informuje aplikację sterownika, że usługi backendu otrzymały informacje o lokalizacji i stanie pojazdu.
vehicleReporter:didFailVehicleUpdate:withError
Informują detektora o niepowodzeniu aktualizacji pojazdu. Jeśli kierowca ma aktualizacje lokalizacji są włączone, klasa
GMTDVehicleReporter
nadal wysyła dane najnowsze dane do Fleet Engine.
Poniższe przykłady pokazują, jak skonfigurować GMTDVehicleReporterListener
do
obsługuje te zdarzenia:
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łuchuj aktualizacji lokalizacji pojazdu
Pakiet Navigation SDK udostępnia aktualizacje lokalizacji pakietowi Driver SDK za pomocą
GMSRoadSnappedLocationProvider
zajęcia. Aby otrzymywać te aktualizacje, ustaw
zwiększyć poziom GMTDVehicleReporter
jako słuchacza.
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łącz aktualizacje lokalizacji
Aby włączyć aktualizacje lokalizacji, ustaw opcję locationTrackingEnabled
na true
GMTDVehicleReporter
w aplikacji kierowcy. Potem klasa GMTDVehicleReporter
automatycznie wysyła aktualizacje lokalizacji do Fleet Engine. Po Fleet Engine
usługi backendu dopasowują i przypisują pojazd do podróży,
Klasa GMTDVehicleReporter
wysyła aktualizacje tras automatycznie, gdy
GMSNavigator
jest w trybie nawigacji, w którym miejsce docelowe jest ustawiane przez
setDestinations
Pakiet Driver SDK ustawia trasę tak, aby pasowała do bieżącej ścieżki nawigacji kierowcy. Do
upewnij się, że informacje o lokalizacji są dokładne, ustaw punkt pośredni w setDestinations
zgodnie z
miejsce docelowe we Fleet Engine.
Z przykładu poniżej dowiesz się, 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
Ustaw interwał aktualizacji
Domyślnie, gdy ustawisz locationTrackingEnabled
na true
, pakiet Driver SDK
wysyła aktualizacje dotyczące podróży i pojazdów do Fleet Engine w 10-sekundowych odstępach. Dostępne opcje
zmień interwał aktualizacji z locationUpdateInterval
na minimalny
wynosi 5 lub maksymalnie 60 sekund. Częstsze aktualizacje mogą
co skutkuje wolniejszym wysyłaniem żądań i błędami.
Ustaw stan pojazdu na online
Po włączeniu aktualizacji lokalizacji ustaw stan pojazdu na ONLINE
, aby
pojazdu dostępnego dla zapytań we Fleet Engine.
W przykładach poniżej pokazujemy, jak ustawić stan pojazdu na ONLINE
. Dla:
Więcej informacji znajdziesz na stronie 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