این بخش نحوه آمادهسازی وسیله نقلیه برای سفرها را نشان میدهد. قبل از اینکه بخش پشتیبانی شما بتواند وسیله نقلیه را با سفر مطابقت دهد، باید هر یک از مراحل زیر را انجام دهید.
تنظیم شنوندگان
پس از مقداردهی اولیه Driver SDK و ایجاد یک نمونه GMTDRidesharingDriverAPI ، میتوانید شنوندههای رویداد را برای نظارت بر موفقیت یا شکست بهروزرسانیهای خودرو که به Fleet Engine و backend شما ارسال میشوند، تنظیم کنید. این شنوندهها میتوانند اقداماتی را در برنامه راننده شما انجام دهند، مانند اطلاعرسانی به راننده در صورت عدم موفقیت ارتباط با backend شما.
به رویدادهای بهروزرسانی خودرو گوش دهید
وقتی راننده بهروزرسانیهای موقعیت مکانی را در برنامه راننده فعال میکند، Driver SDK بهروزرسانیهای منظم خودرو را از طریق کلاس GMTDVehicleReporter به Fleet Engine و backend مشتری ارسال میکند. میتوانید با تنظیم پروتکل GMTDVehicleReporterListener ، برنامه را وادار کنید که به رویدادهای بهروزرسانی پاسخ دهد.
با GMTDVehicleReporterListener ، میتوانید رویدادهای زیر را مدیریت کنید:
vehicleReporter:didSucceedVehicleUpdateبه برنامه راننده اطلاع میدهد که سرویسهای backend با موفقیت بهروزرسانی موقعیت مکانی و وضعیت خودرو را دریافت کردهاند.
vehicleReporter:didFailVehicleUpdate:withErrorبه شنونده اطلاع میدهد که بهروزرسانی وسیله نقلیه با شکست مواجه شده است. تا زمانی که بهروزرسانی موقعیت مکانی راننده فعال باشد، کلاس
GMTDVehicleReporterبه ارسال آخرین دادهها به 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.
ridesharingDriverAPI.vehicleReporter.add(self)
}
func vehicleReporter(_ vehicleReporter: GMTDVehicleReporter, didSucceed vehicleUpdate: GMTDVehicleUpdate) {
// Handle update succeeded.
}
func vehicleReporter(_ vehicleReporter: GMTDVehicleReporter, 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 have implemented the sample code up to this step.
[ridesharingDriverAPI.vehicleReporter addListener:self];
}
- (void)vehicleReporter:(GMTDVehicleReporter *)vehicleReporter didSucceedVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate {
// Handle update succeeded.
}
- (void)vehicleReporter:(GMTDVehicleReporter *)vehicleReporter didFailVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate withError:(NSError *)error {
// Handle update failed.
}
@end
به بهروزرسانیهای موقعیت مکانی خودرو گوش دهید
کیت توسعه نرمافزار ناوبری (Navigation SDK) از طریق کلاس GMSRoadSnappedLocationProvider بهروزرسانیهای موقعیت مکانی را برای کیت توسعه نرمافزار درایور (Driver SDK) ارائه میدهد. برای دریافت این بهروزرسانیها، باید GMTDVehicleReporter را به عنوان یک شنونده (listener) تنظیم کنید.
سویفت
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.
if let roadSnappedLocationProvider = mapView.roadSnappedLocationProvider {
roadSnappedLocationProvider.add(ridesharingDriverAPI.vehicleReporter)
roadSnappedLocationProvider.startUpdatingLocation()
}
}
}
هدف-سی
/**
* 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 have implemented the sample code up to this step.
[_mapView.roadSnappedLocationProvider addListener:ridesharingDriverAPI.vehicleReporter];
[_mapView.roadSnappedLocationProvider startUpdatingLocation];
}
@end
فعال کردن بهروزرسانیهای موقعیت مکانی
برای فعال کردن بهروزرسانیهای موقعیت مکانی، locationTrackingEnabled در GMTDVehicleReporter در برنامه راننده روی true تنظیم کنید. سپس کلاس GMTDVehicleReporter بهطور خودکار بهروزرسانیهای موقعیت مکانی را به Fleet Engine ارسال میکند. پس از اینکه Fleet Engine و سرویسهای backend مشتری، وسیله نقلیه را با هم تطبیق داده و به یک سفر اختصاص دادند، کلاس GMTDVehicleReporter بهروزرسانیهای مسیر را بهطور خودکار ارسال میکند، زمانی که GMSNavigator در حالت ناوبری است، یعنی زمانی که یک مقصد از طریق setDestinations تنظیم شده است.
کیت توسعه نرمافزار درایور (Driver SDK) مسیر را طوری تنظیم میکند که با مسیر ناوبری فعلی راننده مطابقت داشته باشد. برای اطمینان از بهروزرسانیهای دقیق موقعیت مکانی، نقطه مسیر را در setDestinations طوری تنظیم کنید که با مقصد در 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.
ridesharingDriverAPI.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.
ridesharingDriverAPI.vehicleReporter.locationTrackingEnabled = YES;
}
@end
تنظیم فاصله زمانی بهروزرسانی
به طور پیشفرض، وقتی locationTrackingEnabled روی true تنظیم میکنید، Driver SDK بهروزرسانیهای سفر و وسیله نقلیه را با فاصله زمانی ۱۰ ثانیه به Fleet Engine ارسال میکند. میتوانید فاصله زمانی بهروزرسانی را با locationUpdateInterval به حداقل فاصله بهروزرسانی ۵ ثانیه یا حداکثر ۶۰ ثانیه تغییر دهید. بهروزرسانیهای مکرر ممکن است منجر به درخواستهای کندتر و خطا شود.
وضعیت خودرو را روی حالت آنلاین تنظیم کنید
پس از فعال کردن بهروزرسانیهای موقعیت مکانی، وضعیت خودرو را روی ONLINE تنظیم کنید تا خودرو برای جستجو در Fleet Engine در دسترس باشد.
مثالهای زیر نحوه تنظیم وضعیت خودرو به ONLINE را نشان میدهند. برای جزئیات بیشتر، به updateVehicleState مراجعه کنید.
سویفت
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.
ridesharingDriverAPI.vehicleReporter.update(.online)
}
}
هدف-سی
#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.
[ridesharingDriverAPI.vehicleReporter
updateVehicleState:GMTDVehicleStateOnline];
}
@end