Przygotuj pojazd

Z tej sekcji dowiesz się, jak przygotować pojazd do podróży. Musisz wykonać: wykonać każdy z poniższych kroków, zanim system backendu będzie mógł dopasować pojazd do podróży.

Skonfiguruj detektory

Po zainicjowaniu pakietu Driver SDK i utworzeniu GMTDRidesharingDriverAPI 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 sterownik włączy aktualizacje lokalizacji w aplikacji sterownika, pakiet Driver SDK wysyła regularne informacje o pojazdach do Fleet Engine i klienta za pomocą klasy GMTDVehicleReporter. Aplikacja może reagować , aby aktualizować zdarzenia przez skonfigurowanie protokołu GMTDVehicleReporterListener.

GMTDVehicleReporterListener umożliwia obsługę tych zdarzeń:

Poniższe przykłady pokazują, jak skonfigurować GMTDVehicleReporterListener do obsługuje te zdarzenia:

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.
    ridesharingDriverAPI.vehicleReporter.add(self)
  }

  func vehicleReporter(_ vehicleReporter: GMTDVehicleReporter, didSucceed vehicleUpdate: GMTDVehicleUpdate) {
    // Handle update succeeded.
  }

  func vehicleReporter(_ vehicleReporter: GMTDVehicleReporter, 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 have implemented the sample code up to this step.
  [ridesharingDriverAPI.vehicleReporter addListener:self];
}

- (void)vehicleReporter:(GMTDVehicleReporter *)vehicleReporter didSucceedVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate {
  // Handle update succeeded.
}

- (void)vehicleReporter:(GMTDVehicleReporter *)vehicleReporter didFailVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate withError:(NSError *)error {
  // Handle update failed.
}

@end

Nasłuchuj aktualizacji lokalizacji pojazdu

Pakiet Navigation SDK udostępnia aktualizacje lokalizacji pakietowi Driver SDK za pomocą GMSRoadSnappedLocationProvider zajęcia. Aby otrzymywać te aktualizacje, ustaw zwiększyć poziom GMTDVehicleReporter jako słuchacza.

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.
    if let roadSnappedLocationProvider = mapView.roadSnappedLocationProvider {
      roadSnappedLocationProvider.add(ridesharingDriverAPI.vehicleReporter)
      roadSnappedLocationProvider.startUpdatingLocation()
    }
  }
}

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 have implemented the sample code up to this step.
  [_mapView.roadSnappedLocationProvider addListener:ridesharingDriverAPI.vehicleReporter];
  [_mapView.roadSnappedLocationProvider startUpdatingLocation];
}

@end

Włącz aktualizacje lokalizacji

Aby włączyć aktualizacje lokalizacji, ustaw opcję locationTrackingEnabled na true GMTDVehicleReporter w aplikacji kierowcy. Potem klasa GMTDVehicleReporter automatycznie wysyła aktualizacje lokalizacji do Fleet Engine. Po Fleet Engine usługi backendu dopasowują i przypisują pojazd do podróży, Klasa GMTDVehicleReporter wysyła aktualizacje tras automatycznie, gdy GMSNavigator jest w trybie nawigacji, w którym miejsce docelowe jest ustawiane przez setDestinations

Pakiet Driver SDK ustawia trasę tak, aby pasowała do bieżącej ścieżki nawigacji kierowcy. Do upewnij się, że informacje o lokalizacji są dokładne, ustaw punkt pośredni w setDestinations zgodnie z 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.
    ridesharingDriverAPI.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.
  ridesharingDriverAPI.vehicleReporter.locationTrackingEnabled = YES;
}

@end

Ustaw interwał aktualizacji

Domyślnie, gdy ustawisz locationTrackingEnabled na true, pakiet Driver SDK wysyła aktualizacje dotyczące podróży i pojazdów do Fleet Engine w 10-sekundowych odstępach. Dostępne opcje zmień interwał aktualizacji z locationUpdateInterval na minimalny wynosi 5 lub maksymalnie 60 sekund. Częstsze aktualizacje mogą co skutkuje wolniejszym wysyłaniem żądań i błędami.

Ustaw stan pojazdu na online

Po włączeniu aktualizacji lokalizacji ustaw stan pojazdu na ONLINE, aby pojazdu dostępnego dla zapytań we Fleet Engine.

W przykładach poniżej pokazujemy, jak ustawić stan pojazdu na ONLINE. Dla: Więcej informacji znajdziesz na stronie updateVehicleState.

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.
    ridesharingDriverAPI.vehicleReporter.update(.online)
  }
}

Objective-C

#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.
  [ridesharingDriverAPI.vehicleReporter
                                   updateVehicleState:GMTDVehicleStateOnline];
}

@end

Co dalej?

Ustawianie szczegółów podróży