Skonfiguruj detektory
Po zainicjowaniu pakietu Driver SDK i utworzeniu instancji GMTDDeliveryDriverAPI
możesz skonfigurować detektory zdarzeń, aby monitorować powodzenie lub niepowodzeniem aktualizacji pojazdów wysyłanych do Fleet Engine i backendu. Te odbiorcy mogą wywoływać działania w aplikacji kierowcy, np. powiadamiać kierowcę, jeśli komunikacja z serwerem zawodzi.
Nasłuchiwanie zdarzeń aktualizacji pojazdu
Gdy kierowca włączy aktualizacje lokalizacji w aplikacji kierowcy, pakiet Driver SDK regularnie wysyła aktualizacje pojazdu do Fleet Engine i backendu klienta za pomocą klasy GMTDDeliveryVehicleReporter
. Aby aplikacja reagowała na zdarzenia aktualizacji, skonfiguruj protokół GMTDVehicleReporterListener
.
GMTDVehicleReporterListener
umożliwia obsługę tych zdarzeń:
vehicleReporter:didSucceedVehicleUpdate
Informuje aplikację Kierowca, że usługi backendowe otrzymały zaktualizowane informacje o lokalizacji i stanie pojazdu.
vehicleReporter:didFailVehicleUpdate:withError
Informuje słuchacza, że nie udało się zaktualizować pojazdu. Jeśli sterownik ma włączone aktualizacje lokalizacji, klasa
GMTDDeliveryVehicleReporter
nadal 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ć aktualizacje lokalizacji, w aplikacji kierowcy na urządzeniu GMTDDeliveryVehicleReporter
ustaw locationTrackingEnabled
na YES
. Następnie klasa GMTDDeliveryVehicleReporter
automatycznie wysyła aktualizacje 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 przewidywanego czasu przybycia.
Pakiet Driver SDK ustawia trasę tak, aby pasowała do bieżącej ścieżki nawigacji kierowcy. Aby aktualizacje lokalizacji były dokładne, ustaw punkt pośredni -setDestinations:callback:
tak, aby pasował do miejsca docelowego 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.
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 locationTrackingEnabled
na YES
, pakiet Driver SDK domyślnie wysyła aktualizacje lokalizacji do Fleet Engine w 10-sekundowych odstępach. Możesz zmienić interwał aktualizacji za pomocą locationUpdateInterval
na minimalny interwał aktualizacji 5 sekund lub maksymalnie 60 sekund. Częstsze aktualizacje mogą powodować wolniejsze przesyłanie żądań i błędów.