Chuẩn bị xe sẵn sàng

Phần này cho biết cách chuẩn bị xe cho các chuyến đi. Bạn phải hoàn thành từng bước sau đây thì phần phụ trợ của bạn mới có thể so khớp một loại xe với một chuyến đi.

Thiết lập trình nghe

Sau khi khởi động SDK Driver và tạo một thực thể GMTDRidesharingDriverAPI, bạn có thể thiết lập trình nghe sự kiện để theo dõi trạng thái thành công hay thất bại của các bản cập nhật xe được gửi đến Fleet Engine và phần phụ trợ của bạn. Các trình nghe này có thể kích hoạt các hành động trong ứng dụng trình điều khiển, chẳng hạn như thông báo cho trình điều khiển nếu không giao tiếp được với phần phụ trợ.

Theo dõi các sự kiện cập nhật xe

Khi người lái xe bật tính năng cập nhật vị trí trong ứng dụng dành cho người lái xe, SDK dành cho người lái xe sẽ gửi thông tin cập nhật thường xuyên về xe cho Công cụ quản lý đội xe và phần phụ trợ của khách hàng thông qua lớp GMTDVehicleReporter. Bạn có thể yêu cầu ứng dụng phản hồi để cập nhật các sự kiện bằng cách thiết lập giao thức GMTDVehicleReporterListener.

Với GMTDVehicleReporterListener, bạn có thể xử lý các sự kiện sau:

  • vehicleReporter:didSucceedVehicleUpdate

    Thông báo cho ứng dụng Trình điều khiển rằng các dịch vụ phụ trợ đã nhận được thành công thông tin cập nhật về vị trí và trạng thái của xe.

  • vehicleReporter:didFailVehicleUpdate:withError

    Thông báo cho trình nghe rằng không cập nhật được xe. Miễn là trình điều khiển bật tính năng cập nhật vị trí, lớp GMTDVehicleReporter sẽ tiếp tục gửi dữ liệu mới nhất đến Công cụ quản lý đội xe.

Các ví dụ sau đây cho thấy cách thiết lập GMTDVehicleReporterListener để xử lý các sự kiện này:

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

Theo dõi thông tin cập nhật về vị trí của xe

SDK điều hướng cung cấp thông tin cập nhật vị trí cho SDK trình điều khiển thông qua lớp GMSRoadSnappedLocationProvider. Để nhận những thông tin cập nhật đó, bạn phải thiết lập GMTDVehicleReporter làm trình nghe.

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

Bật thông tin cập nhật về vị trí

Để bật tính năng cập nhật vị trí, hãy đặt locationTrackingEnabled thành true trên GMTDVehicleReporter trong ứng dụng trình điều khiển. Sau đó, lớp GMTDVehicleReporter sẽ tự động gửi thông tin cập nhật vị trí đến Fleet Engine. Sau khi Fleet Engine và các dịch vụ phụ trợ của khách hàng so khớp và chỉ định xe cho một chuyến đi, lớp GMTDVehicleReporter sẽ tự động gửi thông tin cập nhật về tuyến đường khi GMSNavigator đang ở chế độ chỉ đường, tức là khi một điểm đến được đặt thông qua setDestinations.

SDK trình điều khiển thiết lập tuyến đường để khớp với lộ trình điều hướng hiện tại của người lái xe. Để đảm bảo thông tin cập nhật vị trí chính xác, hãy đặt điểm trung gian trong setDestinations khớp với đích đến trong Công cụ quản lý đội xe.

Ví dụ sau đây cho thấy cách bật thông tin cập nhật vị trí:

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

Đặt khoảng thời gian giữa những lần cập nhật

Theo mặc định, khi bạn đặt locationTrackingEnabled thành true, SDK tài xế sẽ gửi thông tin cập nhật về chuyến đi và thông tin cập nhật về xe tới Fleet Engine với khoảng thời gian 10 giây. Bạn có thể thay đổi khoảng thời gian cập nhật bằng locationUpdateInterval thành khoảng thời gian cập nhật tối thiểu là 5 giây hoặc tối đa là 60 giây. Việc cập nhật thường xuyên hơn có thể dẫn đến các yêu cầu chậm hơn và lỗi.

Đặt trạng thái của xe thành "Trực tuyến"

Sau khi bạn bật tính năng cập nhật vị trí, hãy đặt trạng thái xe thành ONLINE để xe có thể xuất hiện trong các cụm từ tìm kiếm trong Công cụ quản lý đội xe.

Các ví dụ sau đây minh hoạ cách đặt trạng thái của xe thành ONLINE. Để biết thông tin chi tiết, hãy xem 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

Bước tiếp theo

Đặt thông tin chi tiết về chuyến đi