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