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