Przygotuj pojazd

Konfigurowanie detektorów

Po zainicjowaniu pakietu Driver SDK i utworzeniu instancji GMTDDeliveryDriverAPI możesz skonfigurować detektory zdarzeń, aby monitorować powodzenie lub niepowodzenie aktualizacji pojazdów wysyłanych do Fleet Engine i backendu. Te detektory 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 informacja o zmianie lokalizacji w aplikacji dla kierowców, pakiet SDK sterowników 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:didSucceedVehicleUpdate

    Informuje aplikację kierowcy, że usługi backendu pomyślnie odebrały aktualizację lokalizacji i stanu pojazdu.

  • vehicleReporter:didFailVehicleUpdate:withError

    Informuje detektor, że nie udało się zaktualizować pojazdu. Dopóki kierowca ma włączone informacje o zmianie 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 informacji o zmianie 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 przez setDestinations, klasa GMTDDeliveryVehicleReporter automatycznie wysyła aktualizacje trasy i szacowanego czasu dotarcia na miejsce.

Pakiet Driver SDK ustawia trasę tak, aby odpowiadała bieżącej ścieżce 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ć informacje o zmianie 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) Ustawianie częstotliwości aktualizacji

Domyślnie, gdy ustawisz locationTrackingEnabled na YES, pakiet Driver SDK wysyła informacje o zmianie 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 przetwarzanie żądań i błędy.