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

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

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

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

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

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

  • vehicleReporter:didSucceedVehicleUpdate

    إبلاغ تطبيق "سائق Uber" بأنّ خدمات الخلفية تلقّت بنجاح تعديل الموقع الجغرافي للمركبة وحالتها

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

تضبط حزمة Driver 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 ثانية. وقد تؤدي التعديلات المتكرّرة إلى بطء الطلبات وظهور أخطاء.