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:
vehicleReporter:didSucceedVehicleUpdate
Memberi tahu aplikasi Driver bahwa layanan backend berhasil menerima lokasi kendaraan dan pembaruan negara bagian.
vehicleReporter:didFailVehicleUpdate:withError
Memberi tahu pemroses bahwa update kendaraan gagal. Selama pengemudi memiliki pembaruan lokasi diaktifkan, class
GMTDVehicleReporter
terus mengirim data terbaru ke Fleet Engine.
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 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
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