İşleyicileri ayarlama
Driver SDK'yı başlatıp bir GMTDDeliveryDriverAPI örneği oluşturduktan sonra, Fleet Engine'e ve arka ucunuza gönderilen araç güncellemelerinin başarılı veya başarısız olduğunu izlemek için etkinlik işleyiciler ayarlayabilirsiniz. Bu dinleyiciler, sürücü uygulamanızda işlem tetikleyebilir. Örneğin, arka ucunuzla iletişim başarısız olursa sürücüyü bilgilendirebilir.
Araç güncelleme etkinliklerini dinleme
Sürücü, sürücü uygulamasında konum güncellemelerini etkinleştirdiğinde Driver SDK'sı, GMTDDeliveryVehicleReporter sınıfı aracılığıyla Fleet Engine'e ve müşteri arka ucuna düzenli araç güncellemeleri gönderir. GMTDVehicleReporterListener protokolünü ayarlayarak uygulamanın güncelleme etkinliklerine yanıt vermesini sağlayabilirsiniz.
GMTDVehicleReporterListener ile aşağıdaki etkinlikleri yönetebilirsiniz:
vehicleReporter:didSucceedVehicleUpdateSürücü uygulamasına, arka uç hizmetlerinin araç konumunu ve durum güncellemesini başarıyla aldığını bildirir.
vehicleReporter:didFailVehicleUpdate:withErrorDinleyiciye araç güncellemesinin başarısız olduğunu bildirir. Sürücü konum güncellemelerini etkinleştirdiği sürece
GMTDDeliveryVehicleReportersınıfı, Fleet Engine'e en son verileri göndermeye devam eder.
Aşağıdaki örnekte, bu etkinlikleri işlemek için GMTDVehicleReporterListener öğesinin nasıl ayarlanacağı gösterilmektedir:
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
Konum güncellemelerini etkinleştirme
Konum güncellemelerini etkinleştirmek için GMTDDeliveryVehicleReporter cihazındaki sürücü uygulamasında locationTrackingEnabled ayarını YES olarak belirleyin. Ardından, GMTDDeliveryVehicleReporter sınıfı konum güncellemelerini otomatik olarak Fleet Engine'e gönderir. Ayrıca, GMSNavigator gezinme modundayken (setDestinations üzerinden bir hedef ayarlandığında) GMTDDeliveryVehicleReporter sınıfı, rota ve TVS güncellemelerini otomatik olarak gönderir.
Driver SDK'sı, rotayı sürücünün mevcut navigasyon yoluna uyacak şekilde ayarlar. Konum güncellemelerinin doğru olması için -setDestinations:callback: uygulamasındaki ara noktayı Fleet Engine'deki hedefle eşleşecek şekilde ayarlayın.
Aşağıdaki örnekte, konum güncellemelerinin nasıl etkinleştirileceği gösterilmektedir:
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
(İsteğe bağlı) Güncelleme aralığını ayarlama
Varsayılan olarak, locationTrackingEnabled değerini YES olarak ayarladığınızda Driver SDK, Fleet Engine'e 10 saniyelik aralıklarla konum güncellemeleri gönderir. Güncelleme aralığını locationUpdateInterval ile minimum 5 saniye veya maksimum 60 saniye olacak şekilde değiştirebilirsiniz. Daha sık güncelleme, isteklerin yavaşlamasına ve hatalara neden olabilir.