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

إعداد أدوات معالجة الحدث

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