آماده کردن خودرو

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

راه‌اندازی شنونده‌ها

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

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

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

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

  • vehicleReporter:didSucceedVehicleUpdate

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

  • vehicleReporter:didFailVehicleUpdate:withError

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

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

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

آبجکتیو-سی

/**
 *   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

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

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

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

آبجکتیو-سی

/**
 *   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 ارسال می‌کند. پس‌از اینکه Fleet Engine و سرویس‌های پسین مشتری خودرو را با سفر مطابقت دادند و به آن اختصاص دادند، کلاس GMTDVehicleReporter به‌طور خودکار به‌روزرسانی‌های مسیر را ارسال می‌کند، وقتی که GMSNavigator در حالت پیمایش باشد، یعنی زمانی که مقصد ازطریق setDestinations تنظیم شده باشد.

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

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

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

آبجکتیو-سی

/**
 *   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 به‌روزرسانی‌های سفر و خودرو را در فواصل ۱۰ ثانیه‌ای به Fleet Engine ارسال می‌کند. می‌توانید فاصله به‌روزرسانی را با locationUpdateInterval به حداقل فاصله به‌روزرسانی ۵ ثانیه یا حداکثر ۶۰ ثانیه تغییر دهید. به‌روزرسانی‌های مکررتر ممکن است منجر به درخواست‌های کندتر و خطا شود.

تنظیم وضعیت خودرو روی آنلاین

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

نمونه‌های زیر نحوه تنظیم وضعیت خودرو روی ONLINE را نشان می‌دهد. برای جزئیات، updateVehicleState را ببینید.

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

آبجکتیو-سی

#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

قدم بعدی چیست

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