إعداد المستمعين
بعد إعداد حزمة تطوير البرامج (SDK) الخاصة بالسائق وإنشاء مثيل GMTDDeliveryDriverAPI، يمكنك إعداد متتبِّعات الأحداث لمراقبة نجاح أو فشل تحديثات المركبات المُرسَلة إلى Fleet Engine والخلفية. يمكن أن تؤدي أدوات الاستماع هذه إلى تنفيذ إجراءات ضمن تطبيق السائق، مثل إرسال إشعار إلى السائق في حال تعذّر الاتصال بالخلفية.
الاستماع إلى أحداث تعديل المركبة
عندما يفعّل السائق الإشعارات بشأن الموقع الجغرافي في تطبيق السائق، ترسل حزمة تطوير البرامج (SDK) للسائق
تعديلات منتظمة على المركبة إلى Fleet Engine والواجهة الخلفية للعميل من خلال
فئة GMTDDeliveryVehicleReporter. يمكنك جعل التطبيق يستجيب لأحداث التحديث
من خلال إعداد بروتوكول GMTDVehicleReporterListener.
باستخدام GMTDVehicleReporterListener، يمكنك التعامل مع الأحداث التالية:
vehicleReporter:didSucceedVehicleUpdateيُعلم تطبيق Driver بأنّ خدمات الخلفية قد تلقّت بنجاح تحديثًا لموقع المركبة وحالتها.
vehicleReporter:didFailVehicleUpdate:withErrorيُعلم المستمع بأنّ تعديل بيانات المركبة قد تعذّر. طالما أنّ السائق فعّل ميزة تلقّي الإشعارات بشأن الموقع الجغرافي، ستواصل فئة
GMTDDeliveryVehicleReporterإرسال أحدث البيانات إلى 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.
deliveryDriverAPI.vehicleReporter.add(self)
}
func vehicleReporter(_ vehicleReporter: GMTDDeliveryVehicleReporter, didSucceed vehicleUpdate: GMTDVehicleUpdate) {
// Handle update succeeded.
}
func vehicleReporter(_ vehicleReporter: GMTDDeliveryVehicleReporter, 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 IMPLEMENTED HAVE THE SAMPLE CODE UP TO THIS STEP.
[delivervehicleReporter addListener:self];
}
- (void)vehicleReporter:(GMTDDeliveryVehicleReporter *)vehicleReporter didSucceedVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate {
// Handle update succeeded.
}
- (void)vehicleReporter:(GMTDDeliveryVehicleReporter *)vehicleReporter didFailVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate withError:(NSError *)error {
// Handle update failed.
}
@end
تفعيل الإشعارات بشأن الموقع الجغرافي
لتفعيل الإشعارات بشأن الموقع الجغرافي، في تطبيق السائق على
GMTDDeliveryVehicleReporter، اضبط locationTrackingEnabled على
YES. بعد ذلك، ترسل الفئة GMTDDeliveryVehicleReporter تلقائيًا إشعارات بشأن الموقع الجغرافي إلى Fleet Engine. بالإضافة إلى ذلك، عندما يكون GMSNavigator في وضع التنقّل، أي عندما يتم تحديد وجهة من خلال setDestinations، ترسل فئة GMTDDeliveryVehicleReporter تلقائيًا تعديلات على المسار والوقت المقدَّر للوصول.
تضبط حزمة تطوير البرامج (SDK) للسائقين المسار ليتطابق مع مسار التنقّل الحالي للسائق. لضمان دقة الإشعارات بشأن الموقع الجغرافي، اضبط نقطة المسار في -setDestinations:callback: لتتطابق مع الوجهة في 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.
deliveryDriverAPI.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.
deliveryDriverAPI.vehicleReporter.locationTrackingEnabled = YES;
}
@end
(اختياري) ضبط الفاصل الزمني للتحديث
عند ضبط locationTrackingEnabled على YES، ترسل حزمة تطوير البرامج (SDK) للسائق تلقائيًا
تعديلات الموقع الجغرافي إلى Fleet Engine كل 10 ثوانٍ. يمكنك تغيير
الفاصل الزمني للتحديث باستخدام locationUpdateInterval إلى حد أدنى
يبلغ 5 ثوانٍ أو حد أقصى يبلغ 60 ثانية. قد يؤدي إجراء تعديلات بوتيرة أكبر إلى
بطء الطلبات وحدوث أخطاء.