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