Aracı hazırlayın

İş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:didSucceedVehicleUpdate

    Sürücü uygulamasına, arka uç hizmetlerinin araç konumunu ve durum güncellemesini başarıyla aldığını bildirir.

  • vehicleReporter:didFailVehicleUpdate:withError

    Dinleyiciye araç güncellemesinin başarısız olduğunu bildirir. Sürücü konum güncellemelerini etkinleştirdiği sürece GMTDDeliveryVehicleReporter sı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.