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
daConsumerApi
. - Inizia a monitorare una corsa con
TripModelManager
per ricevere un oggettoTripModel
. - 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'oggettoConsumerApi
. - Ottieni un oggetto
TripModel
dalTripModelManager
che monitora una corsa. - Aggiungi
ConsumerMap[View/Fragment]
alla vista applicazione. - Ottieni un oggetto
ConsumerController
daConsumerMap[View/Fragment]
. - Fornisci l'oggetto
TripModel
al controller per ottenere un oggettoJourneySharingSession
. - 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.
Sono stati rimossi anche i metodi associati al FAB:
ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()