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

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

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

رصد أحداث تحديثات المركبات

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

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

  • vehicleReporter:didSucceedVehicleUpdate

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

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