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

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

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

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

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

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

  • vehicleReporter:didSucceedVehicleUpdate

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

  • vehicleReporter:didFailVehicleUpdate:withError

    به شنونده اطلاع می دهد که به روز رسانی خودرو ناموفق است. تا زمانی که درایور به‌روزرسانی‌های مکان را فعال کرده باشد، کلاس GMTDDeliveryVehicleReporter به ارسال آخرین داده‌ها به 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.
    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.
  }
}

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

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

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

Driver SDK مسیر را طوری تنظیم می کند که با مسیر ناوبری فعلی راننده مطابقت داشته باشد. برای اطمینان از به‌روزرسانی‌های دقیق مکان، نقطه راه را در -setDestinations:callback: تنظیم کنید تا با مقصد در 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.
    deliveryDriverAPI.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.
  deliveryDriverAPI.vehicleReporter.locationTrackingEnabled = YES;
}

@end

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

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