העברה להתאמת מודול ה-SDK של iOS לצרכנים

ה-SDK לצרכן עבור iOS מאפשר ליצור אפליקציות לשיתוף נסיעות באמצעות ארכיטקטורה מודולרית. אתם יכולים להשתמש בחלקים של ה-API שבהם אתם רוצים להשתמש באפליקציה הספציפית שלכם, ולשלב אותם בממשקי API משלכם. ממשקי ה-API של ה-SDK לצרכנים עבור תכונות שונות מחושבים במודולים נפרדים.

אם באפליקציית Ridesharing יש גרסאות קודמות של Consumer SDK, עליך לשדרג את האפליקציה כדי להשתמש בארכיטקטורה המודולרית הזו. במדריך להעברת נתונים מתואר איך לשדרג את האפליקציה.

סקירה כללית

בארכיטקטורה המודולרית של Consumer SDK יש אובייקט MapViewSession שמכיל את המצב של ממשק המשתמש. בגרסאות הקודמות של Consumer SDK, האפליקציות זרמו בין מצבים. באמצעות הארכיטקטורה המודולרית הזו יוצרים אובייקט MapViewSession ויש אפשרות להציג את הסשן במפה. אם לא מוצגים סשנים, המפה תציג את אותו תוכן שמופיע רק ב-Maps SDK ל-iOS.

אובייקט MapViewSession מייצג מופע יחיד של שימוש במחזור החיים של מודול. סשנים הם נקודות הגישה לממשקי ה-API של המודול. לדוגמה, סשן של שיתוף מסע עוקב אחרי נסיעה אחת. יוצרים אינטראקציה עם האובייקט JourneySharingSession כדי לעקוב אחר הנסיעה.

אובייקט TripModel

בגרסאות קודמות של Consumer SDK, מכונת TripService מאפשרת לעקוב אחרי נסיעה פעילה אחת בלבד בכל פעם. בעזרת אובייקט TripModel אפשר לעקוב אחרי מספר נסיעות בזמן אמת במכונה אחת של TripService. אפשר ליצור מכונה של TripModel מה-TripService, וכל מופע של ה-TripModel מקושר לנסיעה ספציפית.

המכונה TripModel מפעילה אירועי עדכון אם מנוי רשום נמצא בנסיעה אחרי שהוא מתעדכן.

ניתן להשתמש באובייקט TripModel גם כדי ליצור מכונה של האובייקט JourneySharingSession.

MapViewSession מדינות

אפשר להוסיף מכונה של MapViewSession רק ב-mapView אחד בכל פעם, והיא יכולה להיות באחד משני המצבים הבאים:

  • מצב GMTCMapViewSessionStateInactive מציין שMapViewSession הזה עדיין לא נוסף ל-mapView, או שהוא הוסר מ-mapView. אחרי שמסירים את המופע של MapViewSession מ-mapView, מתבצעת קריאה ל-method didRemoveFromMapView.

    קריאה לשיטה hideMapViewSession או hideAllMapViewSessions מסירה את mapViewSession מ-mapView:

    [_mapView hideMapViewSession:mapViewSessionA];
    

    או

    [_mapView hideAllMapViewSessions];
    
  • המצב GMTCMapViewSessionStateActive מציין ש-MapViewSession נוסף ל-mapView. כשמוסיפים מופע של MapViewSession ל-mapView, מתבצעת קריאה ל-method didAddToMapView. קריאה לשיטה showMapViewSession מוסיפה את mapViewSession ליעד mapView:

    [_mapView showMapViewSession:mapViewSessionA];
    

שימוש בנתונים בלבד וברכיבי ממשק משתמש

תוכלו ליצור אפליקציה לשיתוף נסיעה באמצעות רכיבי נתונים בלבד או באמצעות ממשקי API של ממשק המשתמש, שמסופקים על ידי הפתרון 'נסיעות ומשלוחים לפי דרישה'.

שימוש ברכיבים לנתונים בלבד

כדי ליצור אפליקציה לשיתוף נסיעות באמצעות רכיבים לנתונים בלבד:

  1. מפעילים אובייקט GMTCServices על ידי ציון מזהה הספק והספק של אסימון הגישה.
  2. משיגים את המאפיין tripService מהמופע המשותף של האובייקט GMTCServices.
  3. יצירה או אחזור של מופע של אובייקט GMTCTripModel לנסיעה מסוימת באמצעות השיטה tripModelForTripName של האובייקט tripService.
  4. צריך לרשום קריאות חוזרות (callback) למכונה של GMTCTripModel כדי להתחיל מעקב אחרי נסיעות.

הדוגמה הבאה מציגה איך להשתמש ברכיבים שמיועדים לנתונים בלבד:

[GMTCServices setAccessTokenProvider:[[AccessTokenProvider alloc] init]
                          providerID:yourProviderID];
GMTCTripService *tripService = [GMTCServices sharedServices].tripService;

// Create a tripModel instance for listening to updates to the trip specified by this trip name.
GMTCTripModel *tripModel = [tripService tripModelForTripName:tripName];

// Register for the trip update events.
[tripModel registerSubscriber:self];

// To stop listening for the trip update.
[tripModel unregisterSubscriber:self];

שימוש בממשקי ה-API של רכיבי ממשק המשתמש

כדי ליצור אפליקציה לצרכנים עם ממשקי API של רכיב בממשק המשתמש לפי דרישה, יש לבצע את הפעולות הבאות:

  1. מפעילים אובייקט GMTCServices על ידי ציון מזהה הספק והספק של אסימון הגישה.
  2. יש להפעיל אובייקט GMTCMapView כדי לעבד את המפה הבסיסית.
  3. משיגים את המאפיין tripService מהמופע המשותף של האובייקט GMTCServices.
  4. יצירה או אחזור של מופע של אובייקט GMTCTripModel לנסיעה מסוימת באמצעות השיטה tripModelForTripName של האובייקט tripService.
  5. יוצרים אובייקט GMTCJourneySharingSession עם המכונה של GMTCTripModel.
  6. הצגת האובייקט GMTCJourneySharingSession ב-mapView.
  7. צריך לרשום קריאות חוזרות (callback) למכונה של GMTCTripModel כדי להתחיל מעקב אחרי נסיעות.

הדוגמה הבאה מציגה איך להשתמש בממשקי ה-API של ממשק המשתמש:

[GMTCServices setAccessTokenProvider:[[AccessTokenProvider alloc] init]
                          providerID:yourProviderID];
GMTCTripService *tripService = [GMTCServices sharedServices].tripService;

// Create a tripModel instance for listening to updates to the trip specified by this trip name.
GMTCTripModel *tripModel = [tripService tripModelForTripName:tripName];
GMTCJourneySharingSession *journeySharingSession =
  [[GMTCJourneySharingSession alloc] initWithTripModel:tripModel];

// Add the journeySharingSession instance on the mapView for UI updating.
[self.mapView showMapViewSession:journeySharingSession];

// Register for the trip update events.
[tripModel registerSubscriber:self];

// To remove the JourneySharingSession from the mapView:
[self.mapView hideMapViewSession:journeySharingSession];

// To stop listening for the trip update.
[tripModel unregisterSubscriber:self];

שינויים בקוד הארכיטקטורה המודולרית

אם אפליקציית Ridesharing משתמשת בגרסאות קודמות של Consumer SDK, הארכיטקטורה המודולרית המעודכנת דורשת שינויים מסוימים בקוד. בקטע הזה מתוארים חלק מהשינויים.

מעקב אחר נסיעות

כדי להשתמש בארכיטקטורה המודולרית המעודכנת, צריך לבצע שינויים בקוד גם למשתמשים בשכבת הנתונים וגם בממשק המשתמש.

בגרסאות קודמות, משתמש בשכבת הנתונים עשוי לטפל במעקב אחרי נסיעות באמצעות הקוד הבא:

GRCTripRequest *tripRequest =
    [[GRCTripRequest alloc] initWithRequestHeader:[GRSRequestHeader defaultHeader]
                                         tripName:tripName
                          autoRefreshTimeInterval:1];
GRCTripService *tripService = [GRCServices sharedServices].tripService;
[tripService registerServiceSubscriber:self];
[tripService setActiveTripWithRequest:tripRequest];

באמצעות הארכיטקטורה המודולרית, משתמש בשכבת הנתונים משתמש בקוד הבא:

GMTCTripService *tripService = [GMTCServices sharedServices].tripService;
GMTCTripModel *tripModel = [tripService tripModelForTripName:tripName];
tripModel.options.autoRefreshTimeInterval = 1;
[tripModel registerSubscriber:self];

בגרסאות קודמות, משתמש בממשק משתמש יכול לטפל במעקב אחר נסיעות באמצעות הקוד הבא:

// Show the Journey Sharing user interface.
[self.mapView startTripMonitoring];

// Hide the Journey Sharing user interface.
[self.mapView resetCustomerState];

באמצעות הארכיטקטורה המודולרית, ממשק משתמש משתמש בקוד הבא:

// Show the Journey Sharing user interface.
GMTCJourneySharingSession *journeySharingSession =
  [[GMTCJourneySharingSession alloc] initWithTripModel:tripModel];
[self.mapView showMapViewSession:journeySharingSession];

// Hide the Journey Sharing user interface.
[self.mapView hideMapViewSession:journeySharingSession];