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

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

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

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

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

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

  • vehicleReporter:didSucceedVehicleUpdate

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

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

هدف-سی

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

هدف-سی

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