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 update 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 reguler 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:
vehicleReporter:didSucceedVehicleUpdateMemberi tahu aplikasi Driver bahwa layanan backend berhasil menerima pembaruan lokasi dan status kendaraan.
vehicleReporter:didFailVehicleUpdate:withErrorMemberi tahu pemroses bahwa update kendaraan gagal. Selama driver mengaktifkan update lokasi, class
GMTDVehicleReporterakan terus mengirimkan 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
Memantau pembaruan lokasi kendaraan
Navigation SDK memberikan update lokasi ke Driver SDK melalui class
GMSRoadSnappedLocationProvider. Untuk menerima pembaruan tersebut, Anda harus menyiapkan GMTDVehicleReporter sebagai pendengar.
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, atur locationTrackingEnabled ke true pada GMTDVehicleReporter di aplikasi pengemudi. Kemudian, kelas GMTDVehicleReporter akan secara otomatis mengirimkan pembaruan lokasi ke Fleet Engine. Setelah Fleet Engine dan layanan backend pelanggan mencocokkan dan menetapkan kendaraan ke suatu perjalanan, kelas GMTDVehicleReporter mengirimkan pembaruan rute secara otomatis saat GMSNavigator berada 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 update
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 pembaruan dengan locationUpdateInterval ke interval pembaruan 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 menetapkan status kendaraan ke ONLINE. Untuk 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