Migration für das Android Consumer SDK-Modularisierung

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 keine „leere“ 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 aus ConsumerApi ab.
  • Starte die Überwachung einer Fahrt mit dem TripModelManager, um ein TripModel-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 dem ConsumerApi-Objekt ab.
  • Rufen Sie ein TripModel-Objekt aus dem TripModelManager ab, das eine Fahrt verfolgt.
  • Fügen Sie ConsumerMap[View/Fragment] zur Anwendungsansicht hinzu.
  • Rufen Sie ein ConsumerController-Objekt aus ConsumerMap[View/Fragment] ab.
  • Übermitteln Sie dem Controller das TripModel-Objekt, um ein JourneySharingSession-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.

Benutzerdefinierte UAS

Zugehörige Methoden für die UAS wurden ebenfalls entfernt:

ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()