Przygotuj pojazd

Konfigurowanie odbiorców

Po zainicjowaniu pakietu Driver SDK i utworzeniu GMTDDeliveryDriverAPIinstancji 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 dla kierowców, 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 Driver SDK będzie regularnie wysyłać aktualizacje pojazdu do Fleet Engine i backendu klienta za pomocą klasy GMTDDeliveryVehicleReporter. Możesz skonfigurować protokół GMTDVehicleReporterListener, aby aplikacja reagowała na zdarzenia aktualizacji.

Za pomocą GMTDVehicleReporterListener możesz obsługiwać te zdarzenia:

  • vehicleReporter:didSucceedVehicleUpdate

    Informuje aplikację kierowcy, że usługi backendu otrzymały aktualizację lokalizacji i stanu pojazdu.

  • vehicleReporter:didFailVehicleUpdate:withError

    Informuje odbiorcę, że aktualizacja pojazdu nie powiodła się. Dopóki kierowca 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 dla kierowców 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 szacowanego czasu przybycia.

Pakiet Driver SDK ustawia trasę tak, aby pasowała do bieżącej ścieżki nawigacji kierowcy. Aby zapewnić dokładne aktualizacje lokalizacji, ustaw punkt pośredni w -setDestinations:callback: tak, aby pasował do miejsca docelowego 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) Ustawianie interwału aktualizacji

Domyślnie, gdy ustawisz wartość locationTrackingEnabled na YES, pakiet Driver SDK wysyła aktualizacje lokalizacji do Fleet Engine co 10 sekund. Możesz zmienić interwał aktualizacji za pomocą ikony locationUpdateInterval na minimum 5 sekund lub maksimum 60 sekund. Częstsze aktualizacje mogą powodować wolniejsze działanie i błędy.