Migrazione per la modularizzazione dell'SDK consumer per iOS

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 che MapViewSession non è stato ancora aggiunto a nessun mapView o che è stato rimosso da un mapView. Quando l'istanza MapViewSession viene rimossa da un mapView, viene richiamato il metodo didRemoveFromMapView.

    La chiamata al metodo hideMapViewSession o hideAllMapViewSessions rimuove mapViewSession da un mapView:

    [_mapView hideMapViewSession:mapViewSessionA];
    

    o

    [_mapView hideAllMapViewSessions];
    
  • Lo stato GMTCMapViewSessionStateActive indica che questo elemento MapViewSession è stato aggiunto a un mapView. Quando un'istanza di MapViewSession è stata aggiunta a un mapView, viene chiamato il metodo didAddToMapView. La chiamata del metodo showMapViewSession aggiunge mapViewSession al mapView 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:

  1. Inizializza un oggetto GMTCServices specificando l'ID provider e il provider del token di accesso.
  2. Ottieni la proprietà tripService dall'istanza condivisa dell'oggetto GMTCServices.
  3. Crea o recupera un'istanza di un oggetto GMTCTripModel per una corsa specificata utilizzando il metodo tripModelForTripName dell'oggetto tripService.
  4. 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:

  1. Inizializza un oggetto GMTCServices specificando l'ID provider e il provider del token di accesso.
  2. Inizializza un oggetto GMTCMapView per il rendering della mappa base.
  3. Ottieni la proprietà tripService dall'istanza condivisa dell'oggetto GMTCServices.
  4. Crea o recupera un'istanza di un oggetto GMTCTripModel per una corsa specificata utilizzando il metodo tripModelForTripName dell'oggetto tripService.
  5. Crea un oggetto GMTCJourneySharingSession con l'istanza GMTCTripModel.
  6. Mostra l'oggetto GMTCJourneySharingSession a mapView.
  7. 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];