Aracı hazırlayın

Bu bölümde, aracın gezilere nasıl hazırlanacağı gösterilmektedir. Arka uç sunucunuz bir aracı bir seyahatle eşleştirebilmesi için aşağıdaki adımların her birini tamamlamanız gerekir.

Dinleyicileri ayarlama

Driver SDK'sını ilk kullanıma hazırlayın ve bir GMTDRidesharingDriverAPIörneği oluşturduktan sonra, Fleet Engine'a ve arka uç sunucunuza gönderilen araç güncellemelerinin başarısını veya başarısızlığını izlemek için etkinlik dinleyicileri ayarlayabilirsiniz. Bu dinleyiciler, sürücü uygulamanızda arka uçla iletişim başarısız olursa sürücüyü bilgilendirme gibi işlemleri tetikleyebilir.

Araç güncelleme etkinliklerini dinleme

Sürücü, sürücü uygulamasında konum güncellemelerini etkinleştirdiğinde Sürücü SDK'sı, GMTDVehicleReporter sınıfı aracılığıyla Fleet Engine'a ve müşteri arka ucuna düzenli araç güncellemeleri gönderir. GMTDVehicleReporterListener protokolünü ayarlayarak uygulamanın etkinlikleri güncellemeye yanıt vermesini sağlayabilirsiniz.

GMTDVehicleReporterListener ile aşağıdaki etkinlikleri yönetebilirsiniz:

  • vehicleReporter:didSucceedVehicleUpdate

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

  • vehicleReporter:didFailVehicleUpdate:withError

    Dinleyiciye bir araç güncellemesinin başarısız olduğunu bildirir. Sürücü konum güncellemelerini etkinleştirdiği sürece GMTDVehicleReporter sınıfı, en son verileri Fleet Engine'a göndermeye devam eder.

Aşağıdaki örneklerde, bu etkinlikleri işlemek için GMTDVehicleReporterListener'ü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.
    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

Araç konum güncellemelerini dinleme

Navigasyon SDK'sı, GMSRoadSnappedLocationProvider sınıfı aracılığıyla Sürücü SDK'sına konum güncellemeleri sağlar. Bu güncellemeleri almak için GMTDVehicleReporter'ü dinleyici olarak ayarlamanız gerekir.

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

Konum güncellemelerini etkinleştirme

Konum güncellemelerini etkinleştirmek için sürücü uygulamasında GMTDVehicleReporter üzerinde locationTrackingEnabledtrue olarak ayarlayın. Ardından GMTDVehicleReporter sınıfı, konum güncellemelerini Fleet Engine'e otomatik olarak gönderir. Fleet Engine ve müşteri arka uç hizmetleri eşleşip aracı bir seyahate atadıktan sonra GMTDVehicleReporter sınıfı, GMSNavigator navigasyon modundayken (setDestinations üzerinden bir hedef belirlendiğinde) rota güncellemelerini otomatik olarak gönderir.

Sürücü SDK'sı, rotayı sürücünün mevcut navigasyon yoluyla eşleşecek şekilde ayarlar. Doğru konum güncellemeleri sağlamak için setDestinations'teki yol noktasını Fleet Engine'daki 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.
    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

Güncelleme aralığını ayarlama

Varsayılan olarak, locationTrackingEnabled değerini true olarak ayarladığınızda Sürücü SDK'sı, 10 saniyelik aralıklarla Fleet Engine'a gezi ve araç güncellemeleri gönderir. locationUpdateInterval ile güncelleme aralığını en az 5 saniye veya en fazla 60 saniye olacak şekilde değiştirebilirsiniz. Daha sık güncellemeler, isteklerin yavaşlamasına ve hatalara neden olabilir.

Araç durumunu "online" olarak ayarlama

Konum güncellemelerini etkinleştirdikten sonra, aracı Fleet Engine'da arama sorguları için kullanılabilir hale getirmek üzere araç durumunu ONLINE olarak ayarlayın.

Aşağıdaki örneklerde, araç durumunun nasıl ONLINE olarak ayarlanacağı gösterilmektedir. Ayrıntılı bilgi için updateVehicleState başlıklı makaleyi inceleyin.

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

Sırada ne var?

Gezi ayrıntılarını ayarlama