يوضّح هذا القسم كيفية تجهيز المركبة للرحلات. يجب إكمال كل خطوة من الخطوات التالية قبل أن تتمكّن الأنظمة الخلفية من مطابقة مركبة مع رحلة.
إعداد أدوات الاستماع
بعد تهيئة Driver SDK وإنشاء مثيل GMTDRidesharingDriverAPI، يمكنك إعداد متتبِّعات الأحداث لمراقبة نجاح أو فشل تعديلات المركبة التي يتم إرسالها إلى Fleet Engine والأنظمة الخلفية. يمكن أن تؤدي أدوات الاستماع هذه إلى تنفيذ إجراءات في تطبيق السائق، مثل إشعار السائق في حال تعذُّر التواصل مع الأنظمة الخلفية.
الاستماع إلى أحداث تعديل المركبة
عندما يفعِّل السائق ميزة "إشعار بشأن الموقع الجغرافي" في تطبيق السائق، يرسل حزمة تطوير البرامج (SDK) للسائق تعديلات منتظمة للمركبة إلى Fleet Engine والأنظمة الخلفية للعميل من خلال الفئة GMTDVehicleReporter. يمكنك ضبط التطبيق للردّ على أحداث التعديل من خلال إعداد بروتوكول GMTDVehicleReporterListener.
باستخدام GMTDVehicleReporterListener، يمكنك معالجة الأحداث التالية:
vehicleReporter:didSucceedVehicleUpdateيُعلم تطبيق السائق بأنّ الخدمات الخلفية قد تلقّت بنجاح الموقع الجغرافي للمركبة وتعديل حالتها.
vehicleReporter:didFailVehicleUpdate:withErrorيُعلم أداة الاستماع بأنّه تعذّر تعديل المركبة. طالما أنّ السائق قد فعّل ميزة "تعديلات الموقع الجغرافي"، تواصل الفئة
GMTDVehicleReporterإرسال أحدث البيانات إلى 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.
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.
}
}
Objective-C
/**
* 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 تعديلات الموقع الجغرافي إلى Driver SDK من خلال الفئة GMSRoadSnappedLocationProvider. لتلقّي هذه التعديلات، عليك إعداد GMTDVehicleReporter كأداة استماع.
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.
if let roadSnappedLocationProvider = mapView.roadSnappedLocationProvider {
roadSnappedLocationProvider.add(ridesharingDriverAPI.vehicleReporter)
roadSnappedLocationProvider.startUpdatingLocation()
}
}
}
Objective-C
/**
* 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 على true في GMTDVehicleReporter في تطبيق السائق. بعد ذلك، ترسل الفئة GMTDVehicleReporter إشعار بشأن الموقع الجغرافي تلقائيًا إلى Fleet Engine. بعد أن تطابق خدمات Fleet Engine والأنظمة الخلفية للعميل المركبة مع رحلة وتعيّنها لها، ترسل الفئة GMTDVehicleReporter تعديلات المسار تلقائيًا عندما يكون GMSNavigator في وضع التنقّل، أي عندما يتم ضبط وجهة من خلال setDestinations.
يضبط Driver SDK المسار ليتطابق مع مسار التنقّل الحالي للسائق. لضمان دقة إشعارات بشأن الموقع الجغرافي، اضبط نقطة على المسار في setDestinations لتتطابق مع الوجهة في 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.
ridesharingDriverAPI.vehicleReporter.locationTrackingEnabled = true
}
}
Objective-C
/**
* 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 على فترات زمنية مدتها 10 ثوانٍ. يمكنك تغيير فترة التعديل باستخدام locationUpdateInterval إلى فترة تعديل لا تقل عن 5 ثوانٍ ولا تزيد عن 60 ثانية. قد تؤدي التعديلات المتكررة إلى إبطاء الطلبات وحدوث أخطاء.
ضبط حالة المركبة على "متوفّرة"
بعد تفعيل ميزة "تعديلات الموقع الجغرافي"، اضبط حالة المركبة على ONLINE لإتاحة المركبة لطلبات البحث في Fleet Engine.
توضّح الأمثلة التالية كيفية ضبط حالة المركبة على ONLINE. للحصول على
التفاصيل، يُرجى الاطّلاع على updateVehicleState.
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.
ridesharingDriverAPI.vehicleReporter.update(.online)
}
}
Objective-C
#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