Siapkan kendaraan

Bagian ini menunjukkan cara menyiapkan kendaraan untuk perjalanan. Anda harus menyelesaikan setiap langkah berikut sebelum backend Anda dapat mencocokkan kendaraan dengan perjalanan.

Menyiapkan pemroses

Setelah menginisialisasi Driver SDK dan membuat instance GMTDRidesharingDriverAPI, Anda dapat menyiapkan pemroses peristiwa untuk memantau keberhasilan atau kegagalan pembaruan kendaraan yang dikirim ke Fleet Engine dan backend Anda. Listener ini dapat memicu tindakan dalam aplikasi pengemudi Anda, seperti memberi tahu pengemudi jika komunikasi dengan backend Anda gagal.

Memproses peristiwa update kendaraan

Saat pengemudi mengaktifkan update lokasi di aplikasi pengemudi, Driver SDK mengirimkan update kendaraan secara rutin ke Fleet Engine dan backend pelanggan melalui class GMTDVehicleReporter. Anda dapat membuat aplikasi merespons peristiwa pembaruan dengan menyiapkan protokol GMTDVehicleReporterListener.

Dengan GMTDVehicleReporterListener, Anda dapat menangani peristiwa berikut:

Contoh berikut menunjukkan cara menyiapkan GMTDVehicleReporterListener untuk menangani peristiwa ini:

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

Memantau pembaruan lokasi kendaraan

Navigation SDK menyediakan update lokasi ke Driver SDK melalui class GMSRoadSnappedLocationProvider. Untuk menerima update tersebut, Anda harus menyiapkan GMTDVehicleReporter sebagai pemroses.

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

Mengaktifkan pembaruan lokasi

Untuk mengaktifkan pembaruan lokasi, tetapkan locationTrackingEnabled ke true di GMTDVehicleReporter di aplikasi pengemudi. Kemudian, class GMTDVehicleReporter akan otomatis mengirimkan pembaruan lokasi ke Fleet Engine. Setelah layanan backend pelanggan dan Fleet Engine cocok dan menetapkan kendaraan ke perjalanan, class GMTDVehicleReporter akan mengirimkan update rute secara otomatis saat GMSNavigator dalam mode navigasi, yaitu saat tujuan ditetapkan melalui setDestinations.

Driver SDK menetapkan rute agar sesuai dengan jalur navigasi pengemudi saat ini. Untuk memastikan pembaruan lokasi yang akurat, tetapkan titik jalan di setDestinations agar cocok dengan tujuan di Fleet Engine.

Contoh berikut menunjukkan cara mengaktifkan pembaruan lokasi:

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

Menetapkan interval pembaruan

Secara default, saat Anda menyetel locationTrackingEnabled ke true, Driver SDK akan mengirimkan update perjalanan dan kendaraan ke Fleet Engine dengan interval 10 detik. Anda dapat mengubah interval update dengan locationUpdateInterval ke interval update minimum 5 detik atau maksimum 60 detik. Pembaruan yang lebih sering dapat menyebabkan permintaan yang lebih lambat dan error.

Menyetel status kendaraan menjadi online

Setelah Anda mengaktifkan pembaruan lokasi, setel status kendaraan ke ONLINE agar kendaraan tersedia untuk kueri penelusuran di Fleet Engine.

Contoh berikut menunjukkan cara menyetel status kendaraan ke ONLINE. Untuk mengetahui detailnya, lihat 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

Langkah berikutnya

Menetapkan detail perjalanan