يوضّح هذا القسم كيفية تجهيز المركبة للرحلات. يجب إكمال كل خطوة من الخطوات التالية قبل أن تتمكّن الخلفية من مطابقة مركبة مع رحلة.
إعداد المستمعين
بعد تهيئة 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
الاستماع إلى تحديثات الموقع الجغرافي للمركبة
توفّر حزمة تطوير البرامج للتنقّل إشعارات التحديث بشأن الموقع الجغرافي إلى حزمة تطوير البرامج للسائقين من خلال الفئة 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
، ترسل حزمة تطوير البرامج (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