Przygotuj pojazd

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

Konfigurowanie słuchaczy

Po zainicjowaniu pakietu Driver SDK i utworzeniu instancji GMTDRidesharingDriverAPImożesz skonfigurować uchwyty 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. powiadamiać kierowcę, jeśli komunikacja z serwerem zawodzi.

Nasłuchiwanie zdarzeń aktualizacji pojazdu

Gdy kierowca włączy aktualizacje lokalizacji w aplikacji, pakiet Driver SDK będzie regularnie wysyłać aktualizacje pojazdu do Fleet Engine i do backendu klienta za pomocą klasy GMTDVehicleReporter. Aby aplikacja reagowała na zdarzenia aktualizacji, skonfiguruj protokół 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 do 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łączanie aktualizacji 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. 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 jest ustawiane za pomocą setDestinations.

Pakiet Driver SDK ustawia trasę tak, aby pasowała do bieżącej ścieżki 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 SDK Kierowcy wysyła do Fleet Engine aktualizacje dotyczące przejazdu i pojazdu 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.

Ustaw stan pojazdu na „online”

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

Z podanych niżej przykładów dowiesz się, 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