Migrazione per Android Consumer Modularization

L'SDK per i consumatori per Android ti consente di creare app di ridesharing utilizzando un'architettura modulare. Puoi utilizzare le parti dell'API che vuoi utilizzare per la tua app specifica e integrarle con le tue API. Le API dell'SDK Consumer per le diverse funzionalità sono incapsulate in moduli separati.

Se la tua app Ridesharing utilizza versioni precedenti dell'SDK consumer, dovrai eseguire l'upgrade dell'app in modo che utilizzi questa architettura modulare. Questa guida alla migrazione descrive come eseguire l'upgrade dell'app.

Panoramica

L'architettura modulare dell'SDK consumer introduce un oggetto sessione che contiene lo stato dell'interfaccia utente. Nelle versioni precedenti dell'SDK Consumer, le app passavano da uno stato all'altro. Grazie a questa architettura modulare, puoi creare un oggetto sessione e visualizzare la sessione sulla mappa. Se non vengono mostrate sessioni, la mappa è vuota. Non esiste più uno stato "vuoto" o "inizializzato".

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

Un oggetto sessione è associato a un tipo di modulo. Il comportamento dell'oggetto sessione è collegato al ciclo di vita dell'oggetto utilizzato per inizializzarlo.

Supponi di creare un oggetto TripModel per monitorare TRIP_A. Se provi a ottenere di nuovo un oggetto TripModel per TRIP_A, otterrai lo stesso oggetto TripModel. Per monitorare TRIP_B, ottieni un nuovo oggetto TripModel.

Stati della sessione

Una sessione può avere uno dei seguenti stati:

  • Una sessione creata è rappresentata da un oggetto Session. Puoi creare 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 metodo start. Ad esempio:

    sessionA.start()
    
  • Una sessione mostrata inizia automaticamente. Visualizza gli eelement dell'interfaccia utente e li aggiorna in risposta agli aggiornamenti dei dati. Puoi mostrare una sessione chiamando il metodo showSession. Ad esempio:

    ConsumerController.showSession(sessionA)
    
  • Una sessione interrotta interrompe l'aggiornamento dei propri dati e gli elementi dell'interfaccia utente. Per interrompere una sessione, chiama il metodo stop. Ad esempio:

    sessionA.stop()
    

Utilizzare componenti solo dati e dell'interfaccia utente

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

Utilizzo dei componenti solo dati

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

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

L'esempio seguente mostra come utilizzare i componenti solo 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 alle API dell'elemento dell'interfaccia utente della soluzione On-demand Rides and Deliveries.

Per creare un'app di ridesharing con le API degli elementi dell'interfaccia utente della soluzione Rides and Deliveries on demand:

  • Inizializza l'oggetto ConsumerApi.
  • Ottieni un oggetto TripModelManager dall'oggetto ConsumerApi.
  • Ottieni un oggetto TripModel da TripModelManager che monitora una corsa.
  • Aggiungi ConsumerMap[View/Fragment] alla visualizzazione dell'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.

Nell'esempio seguente viene illustrato 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 l'app Ridesharing utilizza versioni precedenti dell'SDK Consumer, l'architettura modulare aggiornata richiederà alcune modifiche al tuo codice. In questa sezione vengono descritte alcune di queste modifiche.

Autorizzazioni di accesso alla posizione

Le autorizzazioni FINE_LOCATION non sono più richieste dall'SDK consumer.

Monitoraggio dei viaggi

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

Nelle versioni precedenti, un utente a livello dati poteva gestire il monitoraggio dei viaggi utilizzando il seguente codice:

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

Utilizzando l'architettura modulare, un utente a livello dati deve utilizzare il seguente codice:

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

Nelle versioni precedenti, un utente dell'interfaccia utente poteva gestire il monitoraggio dei viaggi 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 con l'interfaccia utente deve utilizzare 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);

Riposizionamento della mappa in corso...

Quando non ci sono sessioni attive, la visualizzazione mappa o il frammento non esegue più lo zoom sulla posizione dell'utente al momento dell'inizializzazione. Lo zoom verrà comunque automatico per mostrare la sessione di condivisione del percorso attiva, a condizione che la funzionalità AutoFotocamera sia abilitata. Fotocamera automatica è abilitata per impostazione predefinita.

Nelle versioni precedenti, utilizzavi il seguente codice per centrare la videocamera per la sessione attiva in quel momento:

consumerController.centerMapForState()

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

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

Per disattivare la funzionalità AutoFotocamera nelle versioni precedenti, utilizzavi il seguente codice:

consumerController.disableAutoCamera(true);

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

consumerController.setAutoCameraEnabled(false);

Funzionalità di

Il FAB personalizzato della soluzione On-demand Rides and Deliveries Solution è stato rimosso dalla mappa.

FAB personalizzato

Sono stati rimossi anche i metodi associati al FAB:

ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()