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

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

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

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

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

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

  • vehicleReporter:didSucceedVehicleUpdate

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

  • vehicleReporter:didFailVehicleUpdate:withError

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

«کیت توسعه نرم‌افزار راننده» مسیر را طوری تنظیم می‌کند که با مسیر پیمایش فعلی راننده مطابقت داشته باشد. برای اطمینان از به‌روزرسانی‌های دقیق مکان، نقطه‌مسیر را در -setDestinations:callback: تنظیم کنید تا با مقصد در 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.
    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 به حداقل فاصله به‌روزرسانی ۵ ثانیه یا حداکثر ۶۰ ثانیه تغییر دهید. به‌روزرسانی‌های مکررتر ممکن است منجر به درخواست‌های کندتر و خطا شود.