Przygotuj pojazd

Z tej sekcji dowiesz się, jak przygotować pojazd do podróży. Musisz ukończyć 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.

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

W poniższych przykładach pokazano, 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.
    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łuchiwanie aktualizacji lokalizacji pojazdu

Pakiet SDK Nawigacji przekazuje pakiety Driver SDK informacje o lokalizacji za pomocą klasy GMSRoadSnappedLocationProvider. Aby otrzymywać te aktualizacje, musisz skonfigurować GMTDVehicleReporter jako odbiorcę.

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 locationTrackingEnabled na true w GMTDVehicleReporter w aplikacji kierowcy. Następnie 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. Możesz zmienić interwał aktualizacji za pomocą locationUpdateInterval na minimalny interwał aktualizacji 5 sekund lub maksymalnie 60 sekund. Częstsze aktualizacje mogą co skutkuje wolniejszym przesył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. Więcej informacji znajdziesz w sekcji 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