Подготовьте автомобиль

В этом разделе показано, как подготовить транспортное средство к поездкам. Для того чтобы ваша система смогла сопоставить транспортное средство с поездкой, необходимо выполнить каждый из следующих шагов.

Настройте слушателей

После инициализации Driver SDK и создания экземпляра GMTDRidesharingDriverAPI вы можете настроить обработчики событий для отслеживания успешности или неудачи обновлений транспортных средств, отправляемых в Fleet Engine и на ваш бэкэнд. Эти обработчики могут запускать действия в вашем приложении для водителей, например, уведомлять водителя о сбое связи с вашим бэкэндом.

Следите за обновлениями для автомобилей.

Когда водитель включает обновление местоположения в приложении для водителя, SDK водителя регулярно отправляет обновления данных о транспортном средстве в Fleet Engine и на серверную часть клиента через класс GMTDVehicleReporter . Вы можете настроить приложение на реагирование на события обновления, настроив протокол GMTDVehicleReporterListener .

С помощью GMTDVehicleReporterListener можно обрабатывать следующие события:

  • vehicleReporter:didSucceedVehicleUpdate

    Сообщает приложению «Водитель», что серверные службы успешно получили информацию о местоположении и состоянии транспортного средства.

  • vehicleReporter:didFailVehicleUpdate:withError

    Сообщает слушателю о сбое обновления данных о транспортном средстве. Пока у водителя включены обновления местоположения, класс GMTDVehicleReporter продолжает отправлять последние данные в Fleet Engine.

В следующих примерах показано, как настроить GMTDVehicleReporterListener для обработки этих событий:

Быстрый

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

Следите за обновлениями местоположения транспортных средств.

Навигационный SDK предоставляет обновления местоположения для Водительского SDK через класс GMSRoadSnappedLocationProvider . Для получения этих обновлений необходимо настроить GMTDVehicleReporter в качестве слушателя.

Быстрый

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

Включить обновления местоположения

To enable location updates, set locationTrackingEnabled to true on GMTDVehicleReporter in the driver app. Then the GMTDVehicleReporter class automatically sends location updates to Fleet Engine. After the Fleet Engine and customer backend services match and assign the vehicle to a trip, the GMTDVehicleReporter class sends route updates automatically when the GMSNavigator is in navigation mode, which is when a destination is set through setDestinations .

Пакет SDK для драйверов устанавливает маршрут в соответствии с текущим путем навигации водителя. Для обеспечения точного обновления местоположения установите путевую точку в setDestinations в соответствии с пунктом назначения в Fleet Engine.

В следующем примере показано, как включить обновление местоположения:

Быстрый

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

Установите интервал обновления

По умолчанию, если locationTrackingEnabled установлен в true , Driver SDK отправляет обновления о поездках и транспортных средствах в Fleet Engine с интервалом в 10 секунд. Вы можете изменить интервал обновления с помощью locationUpdateInterval , установив минимальный интервал обновления в 5 секунд или максимальный в 60 секунд. Более частые обновления могут привести к замедлению запросов и ошибкам.

Установите состояние транспортного средства в положение «в сети».

После включения обновлений местоположения установите состояние транспортного средства в ONLINE , чтобы сделать его доступным для поисковых запросов в Fleet Engine.

В следующих примерах показано, как установить состояние транспортного средства в ONLINE . Подробности см. в updateVehicleState .

Быстрый

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

Что дальше?

Укажите детали поездки