يعرض هذا القسم كيفية تجهيز المركبة للرحلات. يجب إكمال كلّ خطوة من الخطوات التالية قبل أن تتمكّن واجهة الخلفية من مطابقة مركبة مع رحلة.
إعداد أدوات معالجة الحدث
بعد بدء حزمة تطوير برامج Driver SDK وإنشاء GMTDRidesharingDriverAPI
مثيل، يمكنك إعداد مستمعي الأحداث لتتبُّع نجاح أو تعذُّر
تعديلات المركبات المُرسَلة إلى Fleet Engine ونظامك الأساسي. يمكن لهذه المستمعِين
تنفيذ إجراءات داخل تطبيق السائق، مثل إرسال إشعار إلى السائق في حال تعطُّل معالجة البيانات في الخلفية.
رصد أحداث تحديثات المركبات
عندما يفعّل السائق تحديثات الموقع الجغرافي في تطبيق السائق، تُرسِل حزمة تطوير برامج السائق
تحديثات منتظمة للمركبة إلى Fleet Engine وخلفية العميل
من خلال فئة GMTDVehicleReporter
. يمكنك جعل التطبيق يستجيب
لتعديل الأحداث من خلال إعداد بروتوكول GMTDVehicleReporterListener
.
باستخدام GMTDVehicleReporterListener
، يمكنك معالجة الأحداث التالية:
vehicleReporter:didSucceedVehicleUpdate
إبلاغ تطبيق "سائق Uber" بأنّ خدمات الخلفية تلقّت بنجاح تعديل الموقع الجغرافي للمركبة وحالتها
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
الاستماع إلى إشعارات الموقع الجغرافي للمركبة
توفّر حزمة تطوير البرامج (SDK) لميزة التنقّل إشعارات بشأن الموقع الجغرافي إلى حزمة تطوير البرامج (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 و
customer backend services وتخصّص المركبة لرحلة، تُرسِل فئة
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
، تُرسِل حزمة تطوير برامج (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