הגדרת מאזינים
אחרי אתחול ה-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 שניות לכל היותר. עדכונים תכופים יותר עשויים לגרום
בקשות ושגיאות איטיות יותר.