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

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

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

סקירה כללית

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

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

אובייקט של סשן משויך לסוג מודול. ההתנהגות של האובייקט של הסשן מקושרת למחזור החיים של האובייקט ששימש לאתחול שלו.

נניח שיצרת אובייקט TripModel כדי לעקוב אחר TRIP_A. אם תנסו שוב לקבל אובייקט TripModel עבור TRIP_A, תקבלו את אותו אובייקט TripModel. כדי לעקוב אחרי TRIP_B, צריך לקבל אובייקט TripModel חדש.

מצבי סשן

סשן יכול להיות באחד מכמה מצבים:

  • סשן נוצר מיוצג על ידי אובייקט סשן. יוצרים סשן באמצעות קריאה לשיטה create. למשל:

    JourneySharingSession sessionA = JourneySharingSession.createInstance(TripModelA)
    
  • ביקור שהתחיל נרשם עבור עדכונים לנתונים ולערכים של רכיבי ממשק המשתמש שלו. כדי להתחיל סשן, קוראים לשיטה start. למשל:

    sessionA.start()
    
  • סשן שמוצג מתחיל באופן אוטומטי. הוא מציג את הרכיבים בממשק המשתמש ומעדכן אותם בתגובה לעדכוני נתונים. מציגים סשן על ידי קריאה לשיטה showSession. למשל:

    ConsumerController.showSession(sessionA)
    
  • סשן שהופסק מפסיק לרענן את הנתונים ומפסיק לעדכן את הרכיבים של ממשק המשתמש. כדי להפסיק סשן צריך להפעיל את השיטה stop. למשל:

    sessionA.stop()
    

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

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

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

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

  • אתחול אובייקט ConsumerApi.
  • מקבלים את האובייקט TripModelManager מה-ConsumerApi.
  • אפשר להתחיל לעקוב אחר נסיעה עם TripModelManager כדי לקבל אובייקט TripModel.
  • רישום קריאות חוזרות (callback) באובייקט TripModel.

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

TripModelManager tripManager = ConsumerApi.getTripModelManager();
TripModel tripA = tripManager.getTripModel("trip_A");
tripA.registerTripCallback(new TripModelCallback() {})

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

משתמשים באובייקט ConsumerController כדי לגשת לממשקי ה-API של רכיבי ממשק המשתמש של רכיבי ממשק המשתמש (APIs) לפי דרישה.

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

  • מפעילים את האובייקט ConsumerApi.
  • מקבלים אובייקט TripModelManager מהאובייקט ConsumerApi.
  • צריך לקבל אובייקט TripModel מה-TripModelManager שעוקב אחרי נסיעה אחת.
  • מוסיפים את ConsumerMap[View/Fragment] לתצוגת האפליקציה.
  • מקבלים אובייקט ConsumerController מה-ConsumerMap[View/Fragment].
  • מעבירים את האובייקט TripModel לבקר כדי לקבל אובייקט JourneySharingSession.
  • משתמשים בבקר כדי להציג את JourneySharingSession.

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

TripModelManager tripManager = ConsumerApi.getTripModelManager();
TripModel tripA = TripModelManager.getTripModel("trip_A");

// Session is NOT automatically started when created.
JourneySharingSession jsSessionA = JourneySharingSession.createInstance(tripA);
JourneySharingSession jsSessionB = JourneySharingSession.createInstance(tripB);

// But a session is automatically started when shown.
ConsumerController.showSession(jsSessionA);
ConsumerController.showSession(jsSessionB); // hides trip A; shows trip B.
ConsumerController.hideAllSessions(); // don't show any sessions

// Unregister listeners and delete UI elements of jsSessionA.
consumerController.showSession(jsSessionA);
jsSessionA.stop();
// Recreates and shows UI elements of jsSessionA.
jsSessionA.start();

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

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

הרשאות מיקום

ההרשאות FINE_LOCATION לא נחוצות יותר על ידי Consumer SDK.

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

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

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

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
manager.setActiveTrip("trip_id")
manager.registerActiveTripCallback(new TripModelCallback() {})

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

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
TripModel tripA = TripModelManager.getTrip("trip_A")
tripA.registerTripCallback(new TripModelCallback() {})

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

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
manager.setActiveTrip("trip_id")

ConsumerController controller = consumerGoogleMap.getConsumerController();
consumerController.startJourneySharing()

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

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
TripModel tripA = TripModelManager.getTripModel("trip_A");

ConsumerController controller = consumerGoogleMap.getConsumerController();
JourneySharingSession jsSessionA = JourneySharingSession.createInstance(tripA);
controller.showSession(jsSessionA);

מרכוז מחדש של המפה

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

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

consumerController.centerMapForState()

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

CameraUpdate cameraUpdate = consumerController.getCameraUpdate()
if (cameraUpdate != null) {
   googleMap.animateCamera(cameraUpdate);
   // OR googleMap.moveCamera(cameraUpdate);
}

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

consumerController.disableAutoCamera(true);

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

consumerController.setAutoCameraEnabled(false);

התאמה אישית

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

לחצן FAB מותאם אישית

גם השיטות המשויכות ל-FAB הוסרו:

ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()