Menyiapkan pemroses
Setelah menginisialisasi Driver SDK dan membuat instance GMTDDeliveryDriverAPI
, Anda dapat menyiapkan pemroses peristiwa untuk memantau keberhasilan atau kegagalan pembaruan 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 pembaruan lokasi di aplikasi pengemudi, Driver SDK akan mengirimkan pembaruan kendaraan secara rutin ke Fleet Engine dan backend pelanggan melalui class GMTDDeliveryVehicleReporter
. Anda dapat membuat aplikasi merespons peristiwa pembaruan dengan menyiapkan protokol GMTDVehicleReporterListener
.
Dengan GMTDVehicleReporterListener
, Anda dapat menangani peristiwa berikut:
vehicleReporter:didSucceedVehicleUpdate
Memberi tahu aplikasi Driver bahwa layanan backend berhasil menerima pembaruan lokasi dan status kendaraan.
vehicleReporter:didFailVehicleUpdate:withError
Memberi tahu pemroses bahwa update kendaraan gagal. Selama driver mengaktifkan update lokasi, class
GMTDDeliveryVehicleReporter
akan 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.
deliveryDriverAPI.vehicleReporter.add(self)
}
func vehicleReporter(_ vehicleReporter: GMTDDeliveryVehicleReporter, didSucceed vehicleUpdate: GMTDVehicleUpdate) {
// Handle update succeeded.
}
func vehicleReporter(_ vehicleReporter: GMTDDeliveryVehicleReporter, 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 IMPLEMENTED HAVE THE SAMPLE CODE UP TO THIS STEP.
[delivervehicleReporter addListener:self];
}
- (void)vehicleReporter:(GMTDDeliveryVehicleReporter *)vehicleReporter didSucceedVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate {
// Handle update succeeded.
}
- (void)vehicleReporter:(GMTDDeliveryVehicleReporter *)vehicleReporter didFailVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate withError:(NSError *)error {
// Handle update failed.
}
@end
Mengaktifkan pembaruan lokasi
Untuk mengaktifkan pembaruan lokasi, di aplikasi pengemudi di
GMTDDeliveryVehicleReporter
, setel locationTrackingEnabled
ke
YES
. Kemudian, class GMTDDeliveryVehicleReporter
akan otomatis mengirimkan update lokasi ke Fleet Engine. Selain itu, saat GMSNavigator
dalam mode navigasi, yaitu
saat tujuan ditetapkan melalui setDestinations
, class
GMTDDeliveryVehicleReporter
akan otomatis mengirimkan update rute dan perkiraan waktu tiba.
Driver SDK menetapkan rute agar sesuai dengan jalur navigasi pengemudi saat ini. Untuk memastikan pembaruan lokasi yang akurat, tetapkan titik jalan di
-setDestinations:callback:
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.
deliveryDriverAPI.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.
deliveryDriverAPI.vehicleReporter.locationTrackingEnabled = YES;
}
@end
(Opsional) Menyetel interval pembaruan
Secara default, saat Anda menyetel locationTrackingEnabled
ke YES
, Driver SDK akan mengirimkan update lokasi ke Fleet Engine dengan interval 10 detik. Anda dapat mengubah
interval update dengan locationUpdateInterval
ke interval update minimum
5 detik atau maksimum 60 detik. Pembaruan yang lebih sering dapat mengakibatkan permintaan yang lebih lambat dan error.