Mit dem Consumer SDK for Android können Sie Mitfahrdienst-Apps erstellen: einer modularen Architektur. Sie können die Teile der API verwenden, die Sie benötigen, und in Ihre eigenen APIs einbinden. Das Consumer SDK APIs für die verschiedenen Funktionen sind in separaten Modulen zusammengefasst.
Wenn Ihre Mitfahrdienst-App ältere Versionen des Consumer SDK verwendet, müssen Sie Ihre App aktualisieren, um diese modulare Architektur nutzen zu können. Dieses In der Migrationsanleitung wird beschrieben, wie du deine App aktualisierst.
Übersicht
Die modulare Consumer SDK-Architektur Ein Sitzungsobjekt, das den Status der Benutzeroberfläche enthält. In früheren Versionen des Consumer SDK wurden Apps zwischen den Zuständen ausgetauscht. Mit einer modularen Architektur erstellen Sie ein Sitzungsobjekt, und haben die Möglichkeit, die Sitzung auf der Karte anzuzeigen. Wenn keine Sitzungen angezeigt wird, ist die Karte leer. Es gibt kein leeres Element mehr oder „initialisiert“ Bundesstaat.
Ein Sitzungsobjekt stellt eine einzelne Lebenszyklus-Nutzungsinstanz eines Moduls dar. Sitzungen sind die Zugriffspunkte auf Modul-APIs. Beispiel: auf eine einzelne Fahrt folgt. Du interagierst mit dem Sitzungsobjekt zur Überwachung der Fahrt.
Ein Sitzungsobjekt ist einem Modultyp zugeordnet. Die Methode des Sitzungsobjekts ist mit dem Lebenszyklus des Objekts verknüpft, mit dem es initialisiert wurde.
Angenommen, Sie erstellen ein TripModel
-Objekt, um TRIP_A zu verfolgen.
Wenn Sie noch einmal versuchen, ein TripModel
-Objekt für TRIP_A abzurufen,
erhalten Sie dasselbe TripModel
-Objekt. Besorgen Sie sich ein neues, um TRIP_B nachzuverfolgen.
TripModel
-Objekt.
Sitzungsstatus
Eine Sitzung kann einen von mehreren Status haben:
Eine erstellte Sitzung wird durch ein Sitzungsobjekt dargestellt. Sie erstellen indem Sie die Methode
create
aufrufen. Beispiel:JourneySharingSession sessionA = JourneySharingSession.createInstance(TripModelA)
Eine gestartete Sitzung wird für Aktualisierungen von Daten und Werten registriert Elemente der Benutzeroberfläche. Sie starten eine Sitzung, indem Sie die Methode
start
-Methode. Beispiel:sessionA.start()
Eine angezeigte Sitzung wird automatisch gestartet. Es werden Benutzeroberflächen-E-Elemente angezeigt. und aktualisiert sie als Reaktion auf Datenaktualisierungen. Du zeigst eine Sitzung an durch Aufrufen der Methode
showSession
. Beispiel:ConsumerController.showSession(sessionA)
Bei einer beendeten Sitzung werden die Daten nicht mehr aktualisiert, Elemente der Benutzeroberfläche. Durch Aufrufen der Methode
stop
beenden Sie eine Sitzung. Beispiel:sessionA.stop()
Reine Daten- und Benutzeroberflächenkomponenten verwenden
Mit zwei reinen Datenkomponenten können Sie einen Mitfahrdienst erstellen oder die UI-Element-APIs der On-Demand-Lösung „Rides and Deliveries“.
Reine Datenkomponenten verwenden
So erstellen Sie eine Mitfahrdienst-App mit reinen Datenkomponenten:
- Initialisieren Sie ein
ConsumerApi
-Objekt. - Rufen Sie das
TripModelManager
-Objekt ausConsumerApi
ab. - Starte die Überwachung einer Fahrt mit dem
TripModelManager
, um einTripModel
-Objekt zu erhalten. - Registriert Callbacks für das
TripModel
-Objekt.
Das folgende Beispiel zeigt, wie reine Datenkomponenten verwendet werden:
TripModelManager tripManager = ConsumerApi.getTripModelManager();
TripModel tripA = tripManager.getTripModel("trip_A");
tripA.registerTripCallback(new TripModelCallback() {})
APIs für UI-Elemente verwenden
Verwenden Sie das Objekt ConsumerController
für den Zugriff
„On-Demand Rides and Deliveries“-Lösung für Elemente der Benutzeroberfläche.
Mit der Benutzeroberfläche der Lösung „On-demand Rides and Deliveries“ eine Mitfahrdienst-App erstellen Element-APIs:
- Initialisieren Sie das
ConsumerApi
-Objekt. - Rufen Sie ein
TripModelManager
-Objekt aus demConsumerApi
-Objekt ab. - Rufen Sie ein
TripModel
-Objekt aus demTripModelManager
ab, das eine Fahrt verfolgt. - Fügen Sie
ConsumerMap[View/Fragment]
zur Anwendungsansicht hinzu. - Rufen Sie ein
ConsumerController
-Objekt ausConsumerMap[View/Fragment]
ab. - Übermitteln Sie dem Controller das
TripModel
-Objekt, um einJourneySharingSession
-Objekt zu erhalten. - Verwenden Sie den Controller, um die
JourneySharingSession
aufzurufen.
Das folgende Beispiel zeigt, wie die APIs für die Benutzeroberfläche verwendet werden:
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();
Änderungen am Code der modularen Architektur
Wenn Ihre Mitfahrdienst-App ältere Versionen des Consumer SDK verwendet, erfordert die aktualisierte modulare Architektur einige Änderungen an Ihrem Code. In diesem Abschnitt werden einige dieser Änderungen beschrieben.
Berechtigungen zur Standortermittlung
Berechtigungen vom Typ „FINE_LOCATION
“ sind nicht mehr erforderlich
durch das Consumer SDK.
Fahrten überwachen
Die aktualisierte modulare Architektur erfordert Codeänderungen für beide Datenschicht- und Benutzeroberflächennutzern.
In früheren Versionen kann ein Nutzer mit Datenebene Fahrtüberwachung mit dem folgenden Code:
ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
manager.setActiveTrip("trip_id")
manager.registerActiveTripCallback(new TripModelCallback() {})
Dank der modularen Architektur können Nutzer auf Datenebenen den folgenden Code:
ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
TripModel tripA = TripModelManager.getTrip("trip_A")
tripA.registerTripCallback(new TripModelCallback() {})
In früheren Versionen überwachte ein Benutzer mit der Benutzeroberfläche möglicherweise Fahrten mithilfe des folgenden Codes:
ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
manager.setActiveTrip("trip_id")
ConsumerController controller = consumerGoogleMap.getConsumerController();
consumerController.startJourneySharing()
Dank der modularen Architektur können Benutzer den folgenden Code:
ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
TripModel tripA = TripModelManager.getTripModel("trip_A");
ConsumerController controller = consumerGoogleMap.getConsumerController();
JourneySharingSession jsSessionA = JourneySharingSession.createInstance(tripA);
controller.showSession(jsSessionA);
Karte zentrieren
Die Kartenansicht oder das Fragment zoomt nicht mehr auf den Standort des Nutzers. bei der Initialisierung, wenn keine Sitzung aktiv ist. Es wird immer noch automatisch zoomen, um die aktive Sitzung da die Funktion „AutoCamera“ aktiviert ist. AutoCamera ist standardmäßig aktiviert.
In früheren Versionen würden Sie den folgenden Code verwenden, um die Kamera zu zentrieren für die aktuell aktive Sitzung:
consumerController.centerMapForState()
Bei Verwendung der modularen Architektur würden Sie folgenden Code verwenden:
CameraUpdate cameraUpdate = consumerController.getCameraUpdate()
if (cameraUpdate != null) {
googleMap.animateCamera(cameraUpdate);
// OR googleMap.moveCamera(cameraUpdate);
}
Verwenden Sie den folgenden Code, um die AutoCamera-Funktion in früheren Versionen zu deaktivieren:
consumerController.disableAutoCamera(true);
Bei Verwendung der modularen Architektur würden Sie folgenden Code verwenden:
consumerController.setAutoCameraEnabled(false);
Anpassung
Die benutzerdefinierte UAS-Lösung „On-demand Rides and Deliveries“ wurde von der Karte entfernt.
Zugehörige Methoden für die UAS wurden ebenfalls entfernt:
ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()