Aracı hazırlayın

Bu bölümde, aracın gezilere nasıl hazır hale getirileceği gösterilmektedir. Arka ucunuzun bir aracı geziyle eşleştirebilmesi için aşağıdaki adımların her birini tamamlamanız gerekir.

İşleyicileri ayarlama

Driver SDK'yı başlatıp bir GMTDRidesharingDriverAPI ö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ı, GMTDVehicleReporter 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 GMTDVehicleReporter sınıfı, Fleet Engine'e en güncel verileri göndermeye devam eder.

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

Navigation SDK'sı, GMSRoadSnappedLocationProvider sınıfı aracılığıyla Driver SDK'ya konum güncellemeleri sağlar. Bu güncellemeleri almak için GMTDVehicleReporter öğesini 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 locationTrackingEnabled değerini true 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, aracı bir seyahatle eşleştirip atadıktan sonra GMTDVehicleReporter sınıfı, GMSNavigator gezinme modundayken (setDestinations aracılığıyla bir hedef ayarlandığında) rota 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 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.
    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 Driver SDK, seyahat ve araç güncellemelerini 10 saniyelik aralıklarla Fleet Engine'e gönderir. locationUpdateInterval ile güncelleme aralığını minimum 5 saniye veya maksimum 60 saniye olarak değiştirebilirsiniz. Daha sık güncelleme, isteklerin yavaşlamasına ve hatalara neden olabilir.

Araç durumunu "online" olarak ayarlama

Konum güncellemelerini etkinleştirdikten sonra, araç durumunu ONLINE olarak ayarlayarak aracı Fleet Engine'deki arama sorgularında kullanılabilir hale getirin.

Aşağıdaki örneklerde, araç durumunun ONLINE olarak nasıl 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