Przygotuj pojazd

Skonfiguruj detektory

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. Tacy słuchacze mogą uruchamiać działania w aplikacji kierowcy, np. powiadamiać kierowcę, że nie można połączyć się z backendem.

Nasłuchuj zdarzeń dotyczących aktualizacji pojazdu

Gdy kierowca włączy aktualizacje lokalizacji w aplikacji sterownika, pakiet Driver SDK wysyła regularne aktualizacje pojazdów we Fleet Engine i backendzie klienta GMTDDeliveryVehicleReporter zajęcia. Aby aplikacja reagowała na zdarzenia aktualizacji, skonfiguruj protokół 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. Dopóki kierowca ma włączone aktualizacje lokalizacji, klasa GMTDDeliveryVehicleReporter będzie nadal wysył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łączanie aktualizacji 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 miejsce docelowe jest ustawiane przez 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.