تجهيز المركبة

إعداد المستمعين

بعد إعداد حزمة تطوير البرامج (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

تفعيل تعديلات الموقع الجغرافي

لتفعيل تعديلات الموقع الجغرافي، اضبط locationTrackingEnabled على YES في تطبيق السائق على GMTDDeliveryVehicleReporter. بعد ذلك، يرسل الصف 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، ترسل حزمة Driver SDK تعديلات الموقع الجغرافي إلى Fleet Engine كل 10 ثوانٍ. يمكنك تغيير فاصل التحديث باستخدام locationUpdateInterval إلى فاصل تحديث أدنى يبلغ 5 ثوانٍ أو فاصل تحديث أقصى يبلغ 60 ثانية. قد تؤدي التعديلات الأكثر تكرارًا إلى بطء في الطلبات وحدوث أخطاء.