Konfigurowanie słuchaczy
Po zainicjowaniu pakietu Driver SDK i utworzeniu GMTDDeliveryDriverAPI
można skonfigurować detektory zdarzeń, aby monitorować powodzenie lub niepowodzenie
aktualizacje pojazdów wysyłane do Fleet Engine i Twojego 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, pakiet Driver SDK będzie wysyłać regularne aktualizacje pojazdu do Fleet Engine i do backendu klienta za pomocą klasy GMTDDeliveryVehicleReporter
. Aplikacja może reagować na aktualizację
zdarzeń przez skonfigurowanie protokołu GMTDVehicleReporterListener
.
Za pomocą GMTDVehicleReporterListener
możesz obsługiwać te zdarzenia:
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
GMTDDeliveryVehicleReporter
jest kontynuowana aby wysłać najnowsze dane do Fleet Engine.
Ten przykład pokazuje, jak skonfigurować regułę 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łącz aktualizacje lokalizacji
Aby włączyć aktualizacje lokalizacji, w aplikacji dla kierowcy w GMTDDeliveryVehicleReporter
ustaw locationTrackingEnabled
na YES
. Później
GMTDDeliveryVehicleReporter
zajęcia automatycznie wysyła aktualizacje lokalizacji do:
Fleet Engine. Dodatkowo, gdy GMSNavigator
jest w trybie nawigacji, czyli gdy ustawiono miejsce docelowe 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. Do
zapewnić dokładne aktualizacje lokalizacji, ustaw punkt pośredni
-setDestinations:callback:
, aby dopasować 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.
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 SDK Kierowcy wysyła aktualizacje lokalizacji do Fleet Engine co 10 sekund. Możesz zmienić interwał aktualizacji za pomocą locationUpdateInterval
na minimalny interwał aktualizacji 5 sekund lub maksymalnie 60 sekund. Częstsze aktualizacje mogą powodować wolniejsze żądania i błędy.