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:
vehicleReporter:didSucceedVehicleUpdate
Memberi tahu aplikasi Pengemudi bahwa layanan backend berhasil menerima pembaruan status dan lokasi kendaraan.
vehicleReporter:didFailVehicleUpdate:withError
Memberi tahu pemroses bahwa pembaruan kendaraan gagal. Selama driver mengaktifkan update lokasi, class
GMTDVehicleReporter
akan terus mengirim data terbaru ke Fleet Engine.
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