מכינים את הרכב

הגדרת מאזינים

אחרי אתחול ה-SDK של מנהל ההתקן ויצירת GMTDDeliveryDriverAPI תוכלו להגדיר פונקציות event listener למעקב אחרי ההצלחה או הכישלון של עדכוני רכב נשלחו ל-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

הפעלת עדכוני המיקום

כדי להפעיל את עדכוני המיקום, צריך להפעיל את אפליקציית הנהג באפליקציית הנהג או הפעלה. GMTDDeliveryVehicleReporter, צריך להגדיר את locationTrackingEnabled לערך YES. לאחר מכן, העדכונים של המיקום יישלחו באופן אוטומטי ל-Fleet Engine על ידי הכיתה GMTDDeliveryVehicleReporter. בנוסף, כשה-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 שניות. עדכונים תכופים יותר עשויים לגרום בקשות ושגיאות איטיות יותר.