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

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

بعد تهيئة حزمة تطوير البرامج (SDK) الخاصة بالسائقين وإنشاء مثيل GMTDDeliveryDriverAPI، يمكنك إعداد أدوات معالجة الأحداث لتتبُّع نجاح أو تعذُّر عمليات تعديل المركبة التي يتم إرسالها إلى Fleet Engine والخادم الخلفي. ويمكن أن تؤدي أدوات معالجة الأحداث هذه إلى تشغيل إجراءات داخل تطبيق السائق، مثل إرسال إشعار إلى السائق في حال تعذّر التواصل مع الخلفية.

الاستماع إلى أحداث تحديث المركبة

عندما يفعّل السائق إشعارات الموقع الجغرافي في تطبيق السائق، ترسل حزمة Driver SDK إشعارات منتظمة بشأن المركبة إلى Fleet Engine وخادم العميل الخلفي من خلال الفئة GMTDDeliveryVehicleReporter. يمكنك ضبط التطبيق على الاستجابة لأحداث التحديث من خلال إعداد بروتوكول GMTDVehicleReporterListener.

باستخدام GMTDVehicleReporterListener، يمكنك التعامل مع الأحداث التالية:

  • vehicleReporter:didSucceedVehicleUpdate

    يُعلم هذا الحقل تطبيق السائق بأنّ الخدمات الخلفية قد تلقّت بنجاح معلومات الموقع الجغرافي للمركبة وحالة التحديث.

  • 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 تلقائيًا آخر المعلومات عن المسار ووقت الوصول المقدَّر.

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