İşleyicileri ayarlama
Driver SDK'sını ilk kullanıma hazırlayıp GMTDDeliveryDriverAPI örneği oluşturduktan sonra, Fleet Engine'e ve arka uçunuza gönderilen araç güncellemelerinin başarılı olup olmadığını izlemek için etkinlik işleyicileri ayarlayabilirsiniz. Bu dinleyiciler, sürücü uygulamanızda işlemleri tetikleyebilir. Örneğin, arka ucunuzla iletişim başarısız olursa sürücüye bildirim gönderebilir.
Araç güncelleme etkinliklerini dinleme
Sürücü, sürücü uygulamasında konum güncellemelerini etkinleştirdiğinde Driver SDK, 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:didSucceedVehicleUpdateArka uç hizmetlerinin, araç konumu ve durum güncellemesini başarıyla aldığını sürücü uygulamasına 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'nın 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 üzerindeki sürücü uygulamasında locationTrackingEnabled ayarını YES olarak belirleyin. Ardından GMTDDeliveryVehicleReporter sınıfı, Fleet Engine'e otomatik olarak konum güncellemeleri gönderir. Ayrıca, GMSNavigator navigasyon modundayken (setDestinations üzerinden bir hedef ayarlandığında) GMTDDeliveryVehicleReporter sınıfı, rota ve tahmini varış zamanı güncellemelerini otomatik olarak gönderir.
Driver SDK, rotayı sürücünün mevcut gezinme yoluna uyacak şekilde ayarlar. Konum güncellemelerinin doğru olmasını sağlamak için -setDestinations:callback: içindeki 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 en az 5 saniye veya en fazla 60 saniye olacak şekilde değiştirebilirsiniz. Daha sık güncelleme, isteklerin yavaşlamasına ve hatalara neden olabilir.