Migration für das Android Consumer SDK-Modularisierung

Mit dem Consumer SDK for Android können Sie mit einer modularen Architektur Mitfahrgelegenheiten erstellen. Sie können die Teile der API, die Sie für Ihre spezifische Anwendung nutzen möchten, verwenden und in Ihre eigenen APIs einbinden. Die Consumer SDK-APIs für verschiedene Funktionen sind in separate Module gekapselt.

Wenn Ihre Mitfahrdienst-App ältere Versionen des Consumer SDK verwendet, müssen Sie Ihre App aktualisieren, um diese modulare Architektur nutzen zu können. In dieser Migrationsanleitung wird beschrieben, wie Sie Ihre Anwendung aktualisieren.

Überblick

Die modulare Architektur des Consumer SDK enthält ein Sitzungsobjekt, das den Status der Benutzeroberfläche enthält. In früheren Versionen des Consumer SDK wechselten die Apps zwischen den Status. Mit dieser modularen Architektur erstellen Sie ein Session-Objekt und haben die Möglichkeit, die Sitzung auf der Karte anzuzeigen. Wenn keine Sitzungen angezeigt werden, ist die Karte leer. Der Status „leer“ oder „initialisiert“ ist nicht mehr vorhanden.

Ein Sitzungsobjekt stellt eine einzelne Lebenszyklus-Nutzungsinstanz eines Moduls dar. Sitzungen sind die Zugangspunkte zu Modul-APIs. Beispielsweise folgt eine „Journey Sharing“-Sitzung nach einer einzelnen Fahrt. Sie interagieren mit dem Sitzungsobjekt, um die Fahrt zu überwachen.

Ein Sitzungsobjekt ist einem Modultyp zugeordnet. Das Verhalten 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. Rufen Sie ein neues TripModel-Objekt ab, um TRIP_B zu verfolgen.

Sitzungsstatus

Eine Sitzung kann einen von mehreren Status haben:

  • Eine erstellte Sitzung wird durch ein Sitzungsobjekt dargestellt. Rufen Sie zum Erstellen einer Sitzung die Methode create auf. Beispiel:

    JourneySharingSession sessionA = JourneySharingSession.createInstance(TripModelA)
    
  • Eine gestartete Sitzung wird für Aktualisierungen von Daten und Werten ihrer Benutzeroberflächenelemente registriert. Zum Starten einer Sitzung rufen Sie die Methode start auf. Beispiel:

    sessionA.start()
    
  • Die angezeigte Sitzung wird automatisch gestartet. Es zeigt Elemente der Benutzeroberfläche an und aktualisiert sie als Reaktion auf Datenaktualisierungen. Zum Anzeigen einer Sitzung rufen Sie die Methode showSession auf. Beispiel:

    ConsumerController.showSession(sessionA)
    
  • Bei einer beendeten Sitzung werden die Daten nicht mehr aktualisiert und die Elemente der Benutzeroberfläche werden nicht mehr aktualisiert. Zum Beenden einer Sitzung rufen Sie die Methode stop auf. Beispiel:

    sessionA.stop()
    

Nur Daten und Komponenten der Benutzeroberfläche verwenden

Sie können eine Mitfahrdienstanwendung entweder mit reinen Datenkomponenten oder mit den UI-Elementen erstellen, die von der On-demand Rides and Deliveries-Lösung bereitgestellt werden.

Reine Datenkomponenten verwenden

So erstellen Sie eine Mitfahrdienst-App mit reinen Datenkomponenten:

  • Initialisieren Sie ein ConsumerApi-Objekt.
  • Rufen Sie das TripModelManager-Objekt aus dem ConsumerApi ab.
  • Du kannst mit dem TripModelManager eine Fahrt beobachten, um ein TripModel-Objekt zu erhalten.
  • Registriere 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 Elemente der Benutzeroberfläche verwenden

Verwenden Sie das Objekt ConsumerController, um auf die APIs der On-Demand-UI-Elemente der Lösung „Rides and Deliveries“ zuzugreifen.

So erstellen Sie eine Mitfahrdienst-App mit den APIs der On-Demand-Benutzeroberfläche der Lösung „Rides and Deliveries“:

  • Initialisieren Sie das ConsumerApi-Objekt.
  • Rufen Sie ein TripModelManager-Objekt aus dem ConsumerApi-Objekt ab.
  • Rufen Sie ein TripModel-Objekt aus dem TripModelManager ab, das eine Fahrt verfolgt.
  • Fügen Sie der Anwendungsansicht das ConsumerMap[View/Fragment] hinzu.
  • Ruft ein ConsumerController-Objekt aus dem ConsumerMap[View/Fragment] ab.
  • Stelle dem Controller das TripModel-Objekt zur Verfügung, um ein JourneySharingSession-Objekt zu erhalten.
  • Verwende den Controller, um JourneySharingSession anzuzeigen.

Das folgende Beispiel zeigt, wie die APIs der 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

FINE_LOCATION-Berechtigungen sind für das Consumer SDK nicht mehr erforderlich.

Fahrtüberwachung

Die aktualisierte modulare Architektur erfordert sowohl für Nutzer der Datenebene als auch für Nutzer der Benutzeroberfläche Codeänderungen.

In früheren Versionen konnte ein Nutzer auf Datenebene die Fahrtüberwachung mit dem folgenden Code übernehmen:

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

Bei Verwendung der modularen Architektur würde ein Nutzer auf Datenebene den folgenden Code verwenden:

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

In früheren Versionen konnte ein Benutzer der Benutzeroberfläche die Fahrtüberwachung mit dem folgenden Code durchführen:

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

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

Bei Verwendung der modularen Architektur würde ein Nutzer der Benutzeroberfläche den folgenden Code verwenden:

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

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

Karten neu zentrieren

Wenn keine Sitzung aktiv ist, zoomt die Kartenansicht oder das Fragment bei der Initialisierung nicht mehr auf den Standort des Nutzers. Solange die Autokamera-Funktion aktiviert ist, wird weiterhin automatisch so gezoomt, dass die aktive „Reise teilen“-Sitzung angezeigt wird. Die automatische Kamera ist standardmäßig aktiviert.

In früheren Versionen haben Sie den folgenden Code verwendet, um die Kamera für die aktuelle aktive Sitzung zu zentrieren:

consumerController.centerMapForState()

Bei Verwendung der modularen Architektur würden Sie den folgenden Code verwenden:

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

Verwenden Sie den folgenden Code, um die Funktion „Automatische Kamera“ in früheren Versionen zu deaktivieren:

consumerController.disableAutoCamera(true);

Bei Verwendung der modularen Architektur würden Sie den folgenden Code verwenden:

consumerController.setAutoCameraEnabled(false);

Anpassbare

Die benutzerdefinierte FAB der On-demand Rides and Deliveries-Lösung wurde von der Karte entfernt.

Benutzerdefinierter UAS

Verknüpfte Methoden für den FAB wurden ebenfalls entfernt:

ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()