Siapkan kendaraan

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

Menyiapkan pemroses

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

Memproses peristiwa update kendaraan

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

Dengan GMTDVehicleReporterListener, Anda dapat menangani peristiwa berikut:

Contoh berikut menunjukkan cara menyiapkan GMTDVehicleReporterListener untuk menangani peristiwa berikut:

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

Memproses pembaruan lokasi kendaraan

Navigation SDK memberikan pembaruan lokasi ke Driver SDK melalui Class GMSRoadSnappedLocationProvider. Untuk menerima pembaruan itu, Anda harus menetapkan 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

Aktifkan pembaruan lokasi

Untuk mengaktifkan pembaruan lokasi, tetapkan locationTrackingEnabled ke true di GMTDVehicleReporter di aplikasi pengemudi. Selanjutnya, class GMTDVehicleReporter otomatis mengirimkan pembaruan lokasi ke Fleet Engine. Setelah Fleet Engine dan layanan backend pelanggan mencocokkan dan menetapkan kendaraan untuk sebuah perjalanan, Class GMTDVehicleReporter mengirim pembaruan rute secara otomatis saat GMSNavigator berada dalam mode navigasi, yaitu saat tujuan disetel melalui setDestinations.

Driver SDK menetapkan rute agar cocok dengan jalur navigasi pengemudi saat ini. Kepada memastikan update lokasi yang akurat, menetapkan titik jalan di setDestinations untuk dicocokkan 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 update

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

Tetapkan status kendaraan ke online

Setelah Anda mengaktifkan pembaruan lokasi, setel status kendaraan ke ONLINE untuk membuat yang tersedia untuk kueri pencarian di Fleet Engine.

Contoh berikut menunjukkan cara menetapkan status kendaraan ke ONLINE. Sebagai 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