Migrazione per Android Consumer Modularization

L'SDK consumer per Android consente di creare app di ridesharing utilizzando un'architettura modulare. Puoi usare le parti dell'API che vuoi da utilizzare per la tua app specifica e di integrarle con le tue API. SDK consumer Le API per le diverse caratteristiche sono incapsulate in moduli separati.

Se la tua app Ridesharing utilizza versioni precedenti dell'SDK consumer, dovrai eseguire l'upgrade dell'app per usare questa architettura modulare. Questo guida alla migrazione descrive come eseguire l'upgrade dell'app.

Panoramica

L'architettura modulare dell'SDK consumer introduce un oggetto sessione contenente lo stato dell'interfaccia utente. Nelle versioni precedenti dell'SDK consumer, le app passavano da uno stato all'altro. Con da questa architettura modulare, crei un oggetto Session e avranno la possibilità di visualizzare la sessione sulla mappa. Se non ci sono sessioni vengono visualizzati, la mappa è vuota. Non esiste più uno spazio "vuoto" o "inizializzato" stato.

Un oggetto sessione rappresenta una singola istanza di utilizzo del ciclo di vita di un modulo. Le sessioni sono i punti di accesso delle API dei moduli. Ad esempio: una sessione di condivisione del percorso segue un singolo viaggio. Interagisci con l'oggetto Session per monitorare la corsa.

Un oggetto Session è associato a un tipo di modulo. L'oggetto Sessione è collegato al ciclo di vita dell'oggetto utilizzato per inizializzarlo.

Supponi di creare un oggetto TripModel per monitorare TRIP_A. Se tenti di ottenere nuovamente un oggetto TripModel per TRIP_A, ottenere lo stesso oggetto TripModel. Per tracciare TRIP_B, ottieni un nuovo TripModel oggetto.

Stati sessione

Una sessione può trovarsi in uno dei seguenti stati:

  • Una sessione creata è rappresentata da un oggetto Session. Crea da te di una sessione chiamando il metodo create. Ad esempio:

    JourneySharingSession sessionA = JourneySharingSession.createInstance(TripModelA)
    
  • Viene registrata una sessione avviata per gli aggiornamenti di dati e valori degli elementi dell'interfaccia utente. Puoi avviare una sessione chiamando il start. Ad esempio:

    sessionA.start()
    
  • Una sessione mostrata viene avviata automaticamente. Vengono visualizzati elementi dell'interfaccia utente e le aggiorna in risposta agli aggiornamenti dei dati. Mostri una sessione chiamando il metodo showSession. Ad esempio:

    ConsumerController.showSession(sessionA)
    
  • Una sessione interrotta interrompe l'aggiornamento dei dati e l'aggiornamento dei relativi dati elementi dell'interfaccia utente. Puoi interrompere una sessione chiamando il metodo stop. Ad esempio:

    sessionA.stop()
    

Utilizzo di soli dati e componenti dell'interfaccia utente

Puoi creare un'app di ridesharing utilizzando entrambi i componenti di soli dati o le API degli elementi dell'interfaccia utente fornite da On-demand Rides and Deliveries Solution.

Utilizzo dei componenti di soli dati

Per creare un'app di ridesharing utilizzando componenti di soli dati:

  • Inizializza un oggetto ConsumerApi.
  • Recupera l'oggetto TripModelManager da ConsumerApi.
  • Inizia a monitorare una corsa con TripModelManager per ricevere un oggetto TripModel.
  • Registra i callback sull'oggetto TripModel.

L'esempio seguente mostra come utilizzare i componenti di soli dati:

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

Utilizzo delle API degli elementi dell'interfaccia utente

Utilizza l'oggetto ConsumerController per accedere le API dell'elemento di interfaccia utente di On-demand Rides and Deliveries Solution.

Creare un'app di ridesharing con l'interfaccia utente di On-demand Rides and Deliveries Solution API degli elementi:

  • Inizializza l'oggetto ConsumerApi.
  • Recupera un oggetto TripModelManager dall'oggetto ConsumerApi.
  • Ottieni un oggetto TripModel dal TripModelManager che monitora una corsa.
  • Aggiungi ConsumerMap[View/Fragment] alla vista applicazione.
  • Ottieni un oggetto ConsumerController da ConsumerMap[View/Fragment].
  • Fornisci l'oggetto TripModel al controller per ottenere un oggetto JourneySharingSession.
  • Usa il controller per mostrare JourneySharingSession.

L'esempio seguente mostra come utilizzare le API dell'interfaccia utente:

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();

Modifiche al codice dell'architettura modulare

Se la tua app Ridesharing utilizza versioni precedenti dell'SDK consumer, l'architettura modulare aggiornata richiederà alcune modifiche al codice. In questa sezione vengono descritte alcune di queste modifiche.

Autorizzazioni di accesso alla posizione

Le autorizzazioni FINE_LOCATION non sono più necessarie da parte dell'SDK consumer.

Monitoraggio dei viaggi

L'architettura modulare aggiornata richiede modifiche al codice gli utenti del livello dati e dell'interfaccia utente.

Nelle versioni precedenti, un utente del livello dati monitoraggio degli spostamenti utilizzando il seguente codice:

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

Utilizzando l'architettura modulare, un utente del livello dati utilizzerebbe il seguente codice:

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

Nelle versioni precedenti, il monitoraggio dei viaggi potrebbe essere gestito da un utente dell'interfaccia utente. utilizzando il seguente codice:

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

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

Utilizzando l'architettura modulare, un utente di interfaccia utente utilizzerebbe il seguente codice:

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

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

Ricentramento della mappa

Nella visualizzazione della mappa o nel frammento non viene più eseguito lo zoom sulla posizione dell'utente. all'inizializzazione quando non ci sono sessioni attive. Continuerà aumenta automaticamente lo zoom per mostrare la sessione di condivisione del percorso attiva per tutto il tempo quando la funzionalità Fotocamera automatica è abilitata. La funzionalità Fotocamera automatica è abilitata per impostazione predefinita.

Nelle versioni precedenti, dovevi utilizzare il seguente codice per centrare la fotocamera per la sessione attiva corrente:

consumerController.centerMapForState()

Utilizzando l'architettura modulare, dovresti usare il seguente codice:

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

Per disabilitare la funzionalità Fotocamera automatica nelle versioni precedenti, utilizza il seguente codice:

consumerController.disableAutoCamera(true);

Utilizzando l'architettura modulare, dovresti usare il seguente codice:

consumerController.setAutoCameraEnabled(false);

Personalizzazione

Il FAB personalizzato Soluzione Trasporto passeggeri e consegne on demand è stato rimosso dalla mappa.

FAB personalizzato

Sono stati rimossi anche i metodi associati al FAB:

ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()