وسیله نقلیه را آماده کنید

این بخش نحوه آماده سازی وسیله نقلیه را برای سفر نشان می دهد. شما باید هر یک از مراحل زیر را قبل از اینکه باطن شما بتواند یک وسیله نقلیه را با یک سفر مطابقت دهد، انجام دهید.

شنوندگان را تنظیم کنید

پس از راه‌اندازی Driver SDK و ایجاد یک نمونه GMTDRidesharingDriverAPI ، می‌توانید شنوندگان رویداد را برای نظارت بر موفقیت یا شکست به‌روزرسانی‌های خودرو ارسال شده به Fleet Engine و باطن خود تنظیم کنید. این شنونده‌ها می‌توانند اقداماتی را در برنامه درایور شما انجام دهند، مانند اطلاع دادن به راننده در صورت عدم موفقیت در ارتباط با باطن شما.

به رویدادهای به روز رسانی خودرو گوش دهید

هنگامی که راننده به‌روزرسانی‌های مکان را در برنامه راننده فعال می‌کند، Driver SDK به‌روزرسانی‌های منظم خودرو را از طریق کلاس GMTDVehicleReporter به Fleet Engine و پشتیبانی مشتری ارسال می‌کند. می‌توانید با راه‌اندازی پروتکل GMTDVehicleReporterListener برنامه را به رویدادهای به‌روزرسانی پاسخ دهید.

با GMTDVehicleReporterListener ، می توانید رویدادهای زیر را مدیریت کنید:

  • vehicleReporter:didSucceedVehicleUpdate

    به برنامه Driver اطلاع می دهد که سرویس های پشتیبان با موفقیت موقعیت خودرو و به روز رسانی وضعیت را دریافت کردند.

  • vehicleReporter:didFailVehicleUpdate:withError

    به شنونده اطلاع می دهد که به روز رسانی خودرو ناموفق است. تا زمانی که راننده به‌روزرسانی موقعیت مکانی را فعال کرده باشد، کلاس GMTDVehicleReporter به ارسال آخرین داده‌ها به Fleet Engine ادامه می‌دهد.

مثال‌های زیر نحوه راه‌اندازی GMTDVehicleReporterListener را برای مدیریت این رویدادها نشان می‌دهند:

سویفت

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.
  }
}

هدف-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

به به روز رسانی مکان خودرو گوش دهید

Navigation SDK به‌روزرسانی‌های مکان را از طریق کلاس GMSRoadSnappedLocationProvider به Driver SDK ارائه می‌کند. برای دریافت آن به‌روزرسانی‌ها، باید GMTDVehicleReporter به عنوان شنونده تنظیم کنید.

سویفت

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()
    }
  }
}

هدف-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

به روز رسانی مکان را فعال کنید

برای فعال کردن به‌روزرسانی‌های مکان، locationTrackingEnabled را روی true در GMTDVehicleReporter در برنامه درایور تنظیم کنید. سپس کلاس GMTDVehicleReporter به طور خودکار به روز رسانی مکان را به Fleet Engine ارسال می کند. پس از تطبیق موتور ناوگان و خدمات پشتیبان مشتری و اختصاص وسیله نقلیه به یک سفر، کلاس GMTDVehicleReporter به‌روزرسانی‌های مسیر را به‌طور خودکار هنگامی که GMSNavigator در حالت ناوبری است ارسال می‌کند، یعنی زمانی که یک مقصد از طریق setDestinations تنظیم می‌شود.

Driver SDK مسیر را طوری تنظیم می کند که با مسیر ناوبری فعلی راننده مطابقت داشته باشد. برای اطمینان از به‌روزرسانی‌های دقیق مکان، نقطه بین راه را در setDestinations تنظیم کنید تا با مقصد در Fleet Engine مطابقت داشته باشد.

مثال زیر نحوه فعال کردن به روز رسانی مکان را نشان می دهد:

سویفت

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
  }
}

هدف-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

فاصله به روز رسانی را تنظیم کنید

به‌طور پیش‌فرض، وقتی locationTrackingEnabled را روی true تنظیم می‌کنید، Driver SDK به‌روزرسانی‌های سفر و خودرو را در فاصله زمانی 10 ثانیه به Fleet Engine ارسال می‌کند. می توانید فاصله به روز رسانی را با locationUpdateInterval به حداقل فاصله به روز رسانی 5 ثانیه یا حداکثر 60 ثانیه تغییر دهید. به‌روزرسانی‌های مکرر ممکن است منجر به درخواست‌ها و خطاهای کندتر شود.

وضعیت خودرو را روی حالت آنلاین قرار دهید

پس از فعال کردن به‌روزرسانی‌های مکان، وضعیت خودرو را روی ONLINE تنظیم کنید تا وسیله نقلیه برای درخواست‌های جستجو در Fleet Engine در دسترس باشد.

مثال‌های زیر نشان می‌دهند که چگونه وضعیت خودرو را روی ONLINE تنظیم کنید. برای جزئیات، به updateVehicleState مراجعه کنید.

سویفت

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)
  }
}

هدف-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

بعدش چی

جزئیات سفر را تنظیم کنید