L'SDK Consumer per iOS 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 MapViewSession
con lo stato dell'interfaccia utente. Nelle versioni precedenti dell'SDK Consumer, le app passavano da uno stato all'altro. Con
questa architettura modulare, puoi creare un oggetto MapViewSession
e scegliere di visualizzare la sessione sulla mappa. Se non vengono mostrate
sessioni, la mappa visualizza gli stessi contenuti utilizzati solo
su Maps SDK for iOS.
Un oggetto MapViewSession
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 JourneySharingSession
per monitorare la corsa.
TripModel
oggetto
Nelle versioni precedenti dell'SDK Consumer, un'istanza TripService
ti consente di monitorare una sola corsa alla volta. Utilizzando un oggetto TripModel
,
puoi monitorare più corse in tempo reale in un'unica istanza TripService
.
È possibile creare un'istanza di TripModel
da TripService
e ogni
istanza di TripModel
è associata a una corsa specifica.
Gli eventi di aggiornamento delle chiamate dell'istanza TripModel
se un abbonato registrato si trova nel viaggio quando viene aggiornato.
L'oggetto TripModel
può essere usato anche per creare un'istanza
dell'oggetto JourneySharingSession
.
MapViewSession
stati
Un'istanza MapViewSession
può essere aggiunta in un solo mapView
alla volta e può trovarsi in uno dei seguenti due stati:
Lo stato
GMTCMapViewSessionStateInactive
indica cheMapViewSession
non è stato ancora aggiunto a nessunmapView
o che è stato rimosso da unmapView
. Quando l'istanzaMapViewSession
viene rimossa da unmapView
, viene richiamato il metododidRemoveFromMapView
.La chiamata al metodo
hideMapViewSession
ohideAllMapViewSessions
rimuovemapViewSession
da unmapView
:[_mapView hideMapViewSession:mapViewSessionA];
o
[_mapView hideAllMapViewSessions];
Lo stato
GMTCMapViewSessionStateActive
indica che questo elementoMapViewSession
è stato aggiunto a unmapView
. Quando un'istanza diMapViewSession
è stata aggiunta a unmapView
, viene chiamato il metododidAddToMapView
. La chiamata del metodoshowMapViewSession
aggiungemapViewSession
almapView
target:[_mapView showMapViewSession:mapViewSessionA];
Utilizzare componenti solo dati e dell'interfaccia utente
Puoi creare un'app di ridesharing utilizzando componenti di solo dati o le API degli elementi dell'interfaccia utente fornite dalla soluzione On-demand Rides and Deliveries.
Utilizzo dei componenti solo dati
Per creare un'app di ridesharing utilizzando componenti solo dati:
- Inizializza un oggetto
GMTCServices
specificando l'ID provider e il provider del token di accesso. - Ottieni la proprietà
tripService
dall'istanza condivisa dell'oggettoGMTCServices
. - Crea o recupera un'istanza di un oggetto
GMTCTripModel
per una corsa specificata utilizzando il metodotripModelForTripName
dell'oggettotripService
. - Registra i callback per l'istanza
GMTCTripModel
per avviare il monitoraggio della corsa.
L'esempio seguente mostra come utilizzare i componenti solo dati:
[GMTCServices setAccessTokenProvider:[[AccessTokenProvider alloc] init]
providerID:yourProviderID];
GMTCTripService *tripService = [GMTCServices sharedServices].tripService;
// Create a tripModel instance for listening to updates to the trip specified by this trip name.
GMTCTripModel *tripModel = [tripService tripModelForTripName:tripName];
// Register for the trip update events.
[tripModel registerSubscriber:self];
// To stop listening for the trip update.
[tripModel unregisterSubscriber:self];
Utilizzo delle API degli elementi UI
Segui questa procedura per creare un'app consumer con le API degli elementi dell'interfaccia utente della soluzione On-demand Rides and Deliveries Solution:
- Inizializza un oggetto
GMTCServices
specificando l'ID provider e il provider del token di accesso. - Inizializza un oggetto
GMTCMapView
per il rendering della mappa base. - Ottieni la proprietà
tripService
dall'istanza condivisa dell'oggettoGMTCServices
. - Crea o recupera un'istanza di un oggetto
GMTCTripModel
per una corsa specificata utilizzando il metodotripModelForTripName
dell'oggettotripService
. - Crea un oggetto
GMTCJourneySharingSession
con l'istanzaGMTCTripModel
. - Mostra l'oggetto
GMTCJourneySharingSession
amapView
. - Registra i callback per l'istanza
GMTCTripModel
per avviare il monitoraggio della corsa.
Nell'esempio seguente viene illustrato come utilizzare le API dell'interfaccia utente:
[GMTCServices setAccessTokenProvider:[[AccessTokenProvider alloc] init]
providerID:yourProviderID];
GMTCTripService *tripService = [GMTCServices sharedServices].tripService;
// Create a tripModel instance for listening to updates to the trip specified by this trip name.
GMTCTripModel *tripModel = [tripService tripModelForTripName:tripName];
GMTCJourneySharingSession *journeySharingSession =
[[GMTCJourneySharingSession alloc] initWithTripModel:tripModel];
// Add the journeySharingSession instance on the mapView for UI updating.
[self.mapView showMapViewSession:journeySharingSession];
// Register for the trip update events.
[tripModel registerSubscriber:self];
// To remove the JourneySharingSession from the mapView:
[self.mapView hideMapViewSession:journeySharingSession];
// To stop listening for the trip update.
[tripModel unregisterSubscriber:self];
Modifiche al codice dell'architettura modulare
Se l'app Ridesharing utilizza versioni precedenti dell'SDK Consumer, l'architettura modulare aggiornata richiede alcune modifiche al codice. In questa sezione vengono descritte alcune di queste modifiche.
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:
GRCTripRequest *tripRequest =
[[GRCTripRequest alloc] initWithRequestHeader:[GRSRequestHeader defaultHeader]
tripName:tripName
autoRefreshTimeInterval:1];
GRCTripService *tripService = [GRCServices sharedServices].tripService;
[tripService registerServiceSubscriber:self];
[tripService setActiveTripWithRequest:tripRequest];
Utilizzando l'architettura modulare, un utente a livello dati deve utilizzare il seguente codice:
GMTCTripService *tripService = [GMTCServices sharedServices].tripService;
GMTCTripModel *tripModel = [tripService tripModelForTripName:tripName];
tripModel.options.autoRefreshTimeInterval = 1;
[tripModel registerSubscriber:self];
Nelle versioni precedenti, un utente dell'interfaccia utente poteva gestire il monitoraggio dei viaggi utilizzando il seguente codice:
// Show the Journey Sharing user interface.
[self.mapView startTripMonitoring];
// Hide the Journey Sharing user interface.
[self.mapView resetCustomerState];
Utilizzando l'architettura modulare, un utente con l'interfaccia utente deve utilizzare il seguente codice:
// Show the Journey Sharing user interface.
GMTCJourneySharingSession *journeySharingSession =
[[GMTCJourneySharingSession alloc] initWithTripModel:tripModel];
[self.mapView showMapViewSession:journeySharingSession];
// Hide the Journey Sharing user interface.
[self.mapView hideMapViewSession:journeySharingSession];