Konfigurowanie detektorów
Po zainicjowaniu pakietu Driver SDK i utworzeniu GMTDDeliveryDriverAPI
instancji 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 kierowcy, 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 SDK sterowników będzie wysyłać regularne aktualizacje pojazdu do Fleet Engine i backendu klienta za pomocą klasy GMTDDeliveryVehicleReporter. Możesz skonfigurować aplikację tak, aby reagowała na zdarzenia aktualizacji, konfigurując protokół GMTDVehicleReporterListener.
Za pomocą GMTDVehicleReporterListener możesz obsługiwać te zdarzenia:
vehicleReporter:didSucceedVehicleUpdateInformuje aplikację dla kierowców, że usługi backendu otrzymały aktualizację lokalizacji i stanu pojazdu.
vehicleReporter:didFailVehicleUpdate:withErrorInformuje słuchacza, że aktualizacja pojazdu nie powiodła się. Dopóki kierowca ma włączone informacje o zmianie lokalizacji, klasa
GMTDDeliveryVehicleReporternadal wysyła najnowsze dane do Fleet Engine.
Poniższy przykład pokazuje, 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.
deliveryDriverAPI.vehicleReporter.add(self)
}
func vehicleReporter(_ vehicleReporter: GMTDDeliveryVehicleReporter, didSucceed vehicleUpdate: GMTDVehicleUpdate) {
// Handle update succeeded.
}
func vehicleReporter(_ vehicleReporter: GMTDDeliveryVehicleReporter, 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 IMPLEMENTED HAVE THE SAMPLE CODE UP TO THIS STEP.
[delivervehicleReporter addListener:self];
}
- (void)vehicleReporter:(GMTDDeliveryVehicleReporter *)vehicleReporter didSucceedVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate {
// Handle update succeeded.
}
- (void)vehicleReporter:(GMTDDeliveryVehicleReporter *)vehicleReporter didFailVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate withError:(NSError *)error {
// Handle update failed.
}
@end
Włączanie aktualizacji lokalizacji
Aby włączyć informacje o zmianie lokalizacji, w aplikacji kierowcy na urządzeniu GMTDDeliveryVehicleReporter ustaw locationTrackingEnabled na YES. Następnie klasa GMTDDeliveryVehicleReporter automatycznie wysyła informacje o zmianie lokalizacji do Fleet Engine. Dodatkowo, gdy GMSNavigator jest w trybie nawigacji, czyli gdy miejsce docelowe jest ustawione za pomocą setDestinations, klasa GMTDDeliveryVehicleReporter automatycznie wysyła aktualizacje trasy i szacowanego czasu przybycia.
Driver SDK ustawia trasę tak, aby pasowała do bieżącej ścieżki nawigacji kierowcy. Aby zapewnić dokładne informacje o lokalizacji, ustaw punkt orientacyjny w -setDestinations:callback: tak, aby odpowiadał miejscu docelowemu 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.
deliveryDriverAPI.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.
deliveryDriverAPI.vehicleReporter.locationTrackingEnabled = YES;
}
@end
(Opcjonalnie) Ustaw interwał aktualizacji
Domyślnie, gdy ustawisz wartość locationTrackingEnabled na YES, pakiet SDK sterowników wysyła aktualizacje lokalizacji do Fleet Engine co 10 sekund. Możesz zmienić interwał aktualizacji za pomocą locationUpdateInterval na minimalny interwał aktualizacji wynoszący 5 sekund lub maksymalny wynoszący 60 sekund. Częstsze aktualizacje mogą powodować wolniejsze żądania i błędy.