Siapkan kendaraan

Bagian ini menunjukkan cara menyiapkan kendaraan untuk perjalanan. Anda harus menyelesaikan setiap langkah berikut sebelum backend 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 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 akan mengirimkan pembaruan kendaraan reguler ke Fleet Engine dan backend pelanggan 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 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

Memproses pembaruan lokasi kendaraan

Navigation SDK memberikan 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

Aktifkan 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 Mesin Flotte dan layanan backend pelanggan mencocokkan dan menetapkan kendaraan ke perjalanan, class GMTDVehicleReporter akan otomatis mengirimkan info terbaru rute saat GMSNavigator dalam mode navigasi, yaitu saat tujuan ditetapkan 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 mengubah interval pembaruan dengan locationUpdateInterval menjadi interval pembaruan minimum 5 detik atau maksimum 60 detik. Pembaruan yang lebih sering mungkin menyebabkan permintaan dan error menjadi lebih lambat.

Tetapkan status kendaraan ke online

Setelah Anda mengaktifkan update lokasi, tetapkan status kendaraan ke ONLINE agar kendaraan tersedia untuk kueri penelusuran 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