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

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

אחרי אתחול ה-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. לאחר מכן עדכוני מיקום יישלחו אוטומטית לכיתה אחת (GMTDDeliveryVehicleReporter) אל מנוע Fleet. בנוסף, כשה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, ה-SDK של מנהל ההתקן שולחת עדכוני מיקום ל-Fleet Engine במרווחים של 10 שניות. אפשר לשנות מרווח העדכון עם locationUpdateInterval למרווח עדכון מינימלי של 5 שניות או 60 שניות לכל היותר. עדכונים תכופים יותר עשויים לגרום בקשות ושגיאות איטיות יותר.