Przygotuj pojazd

W tej sekcji dowiesz się, jak przygotować pojazd do podróży. Zanim backend będzie mógł dopasować pojazd do podróży, musisz wykonać te czynności.

Konfigurowanie słuchaczy

Po zainicjowaniu pakietu Driver SDK i utworzeniu instancji GMTDRidesharingDriverAPImożesz skonfigurować odbiorców zdarzeń, aby monitorować powodzenie lub niepowodzenie aktualizacji pojazdu wysyłanych do Fleet Engine i Twojego backendu. Te odbiorcy mogą wywoływać działania w aplikacji kierowcy, np. informować kierowcę, jeśli komunikacja z backendem się nie powiedzie.

Odbieranie zdarzeń aktualizacji pojazdu

Gdy kierowca włączy aktualizacje lokalizacji w aplikacji dla kierowcy, pakiet Driver SDK będzie regularnie wysyłać aktualizacje dotyczące pojazdu do Fleet Engine i do backendu klienta za pomocą klasy GMTDVehicleReporter. Możesz skonfigurować aplikację tak, aby reagowała na zdarzenia aktualizacji, korzystając z protokołu GMTDVehicleReporterListener.

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

W poniższych przykładach pokazano, jak skonfigurować usługę 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

Słuchaj aktualizacji lokalizacji pojazdu

Pakiet SDK nawigacji przekazuje pakiety Driver SDK aktualizacje 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łączanie aktualizacji lokalizacji

Aby włączyć aktualizacje lokalizacji, ustaw locationTrackingEnabled na true w aplikacji dla kierowcy. Następnie klasa GMTDVehicleReporter automatycznie wysyła aktualizacje lokalizacji do Fleet Engine.GMTDVehicleReporter Gdy silnik floty i usługi backendowe klienta dopasują i przypiszą pojazd do przejazdu, klasa GMTDVehicleReporter automatycznie wysyła aktualizacje trasy, gdy GMSNavigator jest w trybie nawigacji, czyli gdy miejsce docelowe zostanie ustawione za pomocą setDestinations.

Pakiet Driver SDK ustawia trasę tak, aby odpowiadała bieżącej ścieżce nawigacji kierowcy. Aby zapewnić dokładne aktualizacje lokalizacji, ustaw punkt kontrolny w setDestinations tak, aby pasował do miejsca docelowego w Fleet Engine.

Ten 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.
    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

Ustawianie interwału aktualizacji

Domyślnie, gdy ustawisz locationTrackingEnabled na true, pakiet Driver SDK wysyła do Fleet Engine informacje o podróży i pojazdach w co 10 sekund. Możesz zmienić interwał aktualizacji za pomocą funkcji locationUpdateInterval na co najmniej 5 sekund lub maksymalnie 60 sekund. Częstsze aktualizacje mogą powodować wolniejsze żądania i błędy.

Ustaw stan pojazdu na „online”

Po włączeniu aktualizacji lokalizacji ustaw stan pojazdu na ONLINE, aby udostępnić go w zapytaniach wyszukiwania w Fleet Engine.

Poniższe przykłady pokazują, 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