Consumer SDK ל-Android מאפשר ליצור אפליקציות לשיתוף נסיעות באמצעות ארכיטקטורה מודולרית. אפשר להשתמש בחלקים הרצויים של ה-API לשימוש באפליקציה הספציפית שלכם, ולשלב אותם עם ממשקי API משלכם. ערכת ה-SDK לצרכן ממשקי API של תכונות שונות מוצפנים במודולים נפרדים.
אם באפליקציית 'שיתוף נסיעות' נעשה שימוש בגרסאות קודמות של ה-SDK לצרכנים, כדי להשתמש בארכיטקטורה המודולרית, צריך לשדרג את האפליקציה. הזה במדריך להעברת נתונים (מיגרציה) איך לשדרג את האפליקציה.
סקירה כללית
הארכיטקטורה המודולרית של ה-SDK לצרכן מציגה אובייקט סשן שמכיל את המצב של ממשק המשתמש. בגרסאות קודמות של ה-SDK לצרכנים, אפליקציות שעברו בין מדינות. ב- בארכיטקטורה המודולרית הזו, יוצרים אובייקט סשן והם יכולים להציג את הסשן במפה. אם אין סשנים מוצגים, המפה ריקה. השדה 'ריק' לא יכול להישאר ריק או "מאתחל" .
אובייקט סשן מייצג מופע יחיד של שימוש במחזור חיים של מודול. סשנים הם נקודות הגישה לממשקי API של המודולים. לדוגמה, סשן של 'שיתוף תהליך' עוקב אחר נסיעה אחת. אינטראקציה לאובייקט 'סשן' כדי לעקוב אחרי הנסיעה.
אובייקט סשן משויך לסוג מודול. הערך של אובייקט הסשן מקושרת למחזור החיים של האובייקט שמשמש לאתחול שלו.
נניח שיוצרים אובייקט TripModel
כדי לעקוב אחרי TRIP_A.
אם תנסה להשיג שוב אובייקט TripModel
עבור TRIP_A,
מקבלים את אותו אובייקט TripModel
. כדי לעקוב אחר TRIP_B, עליך להשיג
אובייקט TripModel
.
מצבי סשנים
סשן יכול להיות באחד מכמה מצבים:
סשן שנוצר מיוצג על ידי אובייקט סשן. אתם יוצרים סשן באמצעות קריאה ל-method
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 של רכיבי ממשק המשתמש של הפתרון בנושא נסיעות ומשלוחים על פי דרישה.
ליצור אפליקציית שיתוף נסיעות עם ממשק המשתמש של הפתרון בנושא נסיעות ומשלוחים על פי דרישה ממשקי 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();
שינויים בקוד של ארכיטקטורה מודולרית
אם באפליקציית 'שיתוף נסיעות' נעשה שימוש בגרסאות קודמות של ה-SDK לצרכנים, תצטרכו לבצע כמה שינויים בקוד בארכיטקטורה המודולרית המעודכנת. בקטע הזה מתוארים חלק מהשינויים האלה.
הרשאות מיקום
FINE_LOCATION
הרשאות כבר לא נדרשות
על ידי הצרכן.
מעקב נסיעות
הארכיטקטורה המודולרית המעודכנת מחייבת שינויים בקוד של שניהם בשכבת הנתונים ובממשק המשתמש.
בגרסאות קודמות, משתמש בשכבת נתונים יכול לטפל מעקב אחר נסיעות באמצעות הקוד הבא:
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()