El SDK de consumidores para iOS te permite crear apps de transporte compartido mediante una arquitectura modular. Puedes utilizar las partes de la API que quieras usar para tu app en particular e integrarlas con tus propias APIs. Las APIs del SDK del consumidor para diferentes funciones se encapsulan en módulos separados.
Si tu app de transporte compartido usa versiones anteriores del SDK para consumidores, deberás actualizarla para usar esta arquitectura modular. En esta guía de migración, se describe cómo actualizar tu app.
Descripción general
La arquitectura modular del SDK de consumidores presenta
un objeto MapViewSession
que contiene el estado de la interfaz de usuario. En las versiones anteriores del SDK para consumidores, las apps pasaban de un estado a otro. Con
esta arquitectura modular, puedes crear un objeto MapViewSession
y tener la opción de mostrar la sesión en el mapa. Si no se muestran sesiones, el mapa muestra el mismo contenido que solo se muestra cuando se usa el SDK de Maps para iOS.
Un objeto MapViewSession
representa una sola instancia de uso del ciclo de vida de un módulo. Las sesiones son los puntos de acceso a las APIs de módulos. Por ejemplo, una sesión de Viajes compartidos sigue un solo viaje. Interactúas con el objeto JourneySharingSession
para supervisar el viaje.
Objeto TripModel
En versiones anteriores del SDK para consumidores, una instancia de TripService
te permite supervisar solo un viaje en tiempo real a la vez. Con un objeto TripModel
, puedes supervisar varios viajes en tiempo real en una instancia de TripService
.
Se puede crear una instancia de TripModel
desde TripService
, y cada instancia de TripModel
está vinculada a un viaje específico.
La instancia TripModel
llama a los eventos de actualización si un suscriptor registrado está en el viaje cuando se actualiza.
El objeto TripModel
también se puede usar para crear una instancia del objeto JourneySharingSession
.
MapViewSession
estados
Una instancia de MapViewSession
se puede agregar en una sola instancia de mapView
a la vez y puede tener uno de estos dos estados:
El estado
GMTCMapViewSessionStateInactive
indica que esteMapViewSession
aún no se agregó a ningúnmapView
o que se quitó de unmapView
. Cuando se quita la instanciaMapViewSession
de unmapView
, se llama al métododidRemoveFromMapView
.Llamar al método
hideMapViewSession
ohideAllMapViewSessions
quita elmapViewSession
de unamapView
:[_mapView hideMapViewSession:mapViewSessionA];
o
[_mapView hideAllMapViewSessions];
El estado
GMTCMapViewSessionStateActive
indica que esteMapViewSession
se agregó a unmapView
. Cuando se agrega una instancia deMapViewSession
a unmapView
, se llama al métododidAddToMapView
. Cuando se llama al métodoshowMapViewSession
, se agregamapViewSession
almapView
de destino:[_mapView showMapViewSession:mapViewSessionA];
Cómo usar solo datos y componentes de la interfaz de usuario
Puedes crear una app de transporte compartido mediante los componentes solo de datos o las APIs de elementos de la interfaz de usuario que proporciona la solución On-demand Rides & Deliveries.
Cómo usar componentes solo de datos
Para crear una app de transporte compartido con componentes que solo usan datos, haz lo siguiente:
- Especifica el ID del proveedor y el proveedor de tokens de acceso para inicializar un objeto
GMTCServices
. - Obtén la propiedad
tripService
de la instancia compartida del objetoGMTCServices
. - Crea o recupera una instancia de un objeto
GMTCTripModel
para un viaje especificado con el métodotripModelForTripName
del objetotripService
. - Registra devoluciones de llamada para la instancia
GMTCTripModel
a fin de iniciar la supervisión de viajes.
En el siguiente ejemplo, se muestra cómo usar componentes de solo datos:
[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];
Cómo usar las APIs de elementos de IU
Sigue este procedimiento si quieres crear una app para consumidores con las APIs de elementos de la interfaz de usuario de la solución On-demand Rides & Deliveries:
- Especifica el ID del proveedor y el proveedor de tokens de acceso para inicializar un objeto
GMTCServices
. - Inicializa un objeto
GMTCMapView
para renderizar el mapa base. - Obtén la propiedad
tripService
de la instancia compartida del objetoGMTCServices
. - Crea o recupera una instancia de un objeto
GMTCTripModel
para un viaje especificado con el métodotripModelForTripName
del objetotripService
. - Crea un objeto
GMTCJourneySharingSession
con la instanciaGMTCTripModel
. - Muestra el objeto
GMTCJourneySharingSession
enmapView
. - Registra devoluciones de llamada para la instancia
GMTCTripModel
a fin de iniciar la supervisión de viajes.
En el siguiente ejemplo, se muestra cómo usar las APIs de interfaz de usuario:
[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];
Cambios en el código de la arquitectura modular
Si tu app de transporte compartido usa versiones anteriores del SDK para consumidores, la arquitectura modular actualizada requiere algunos cambios en tu código. En esta sección, se describen algunos de esos cambios.
Supervisión de viajes
La arquitectura modular actualizada requiere cambios de código para los usuarios de la capa de datos y de la interfaz de usuario.
En versiones anteriores, un usuario de capa de datos podía controlar la supervisión de viajes con el siguiente código:
GRCTripRequest *tripRequest =
[[GRCTripRequest alloc] initWithRequestHeader:[GRSRequestHeader defaultHeader]
tripName:tripName
autoRefreshTimeInterval:1];
GRCTripService *tripService = [GRCServices sharedServices].tripService;
[tripService registerServiceSubscriber:self];
[tripService setActiveTripWithRequest:tripRequest];
Con la arquitectura modular, un usuario de capa de datos usaría el siguiente código:
GMTCTripService *tripService = [GMTCServices sharedServices].tripService;
GMTCTripModel *tripModel = [tripService tripModelForTripName:tripName];
tripModel.options.autoRefreshTimeInterval = 1;
[tripModel registerSubscriber:self];
En versiones anteriores, un usuario de interfaz de usuario podía controlar la supervisión de viajes con el siguiente código:
// Show the Journey Sharing user interface.
[self.mapView startTripMonitoring];
// Hide the Journey Sharing user interface.
[self.mapView resetCustomerState];
Con la arquitectura modular, un usuario de la interfaz de usuario usaría el siguiente código:
// 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];