O SDK do Consumer para iOS permite criar apps de serviço de transporte por aplicativo usando uma arquitetura modular. Você pode usar as partes da API que quer usar no seu app específico e integrá-las às suas próprias APIs. As APIs do SDK do consumidor para diferentes recursos são encapsuladas em módulos separados.
Se o app de serviço de transporte por aplicativo usa versões anteriores do SDK do consumidor, será necessário fazer upgrade dele para usar essa arquitetura modular. Este guia de migração descreve como fazer upgrade do seu app.
Visão geral
A arquitetura modular do SDK do consumidor introduz
um objeto MapViewSession
que contém o estado da interface do usuário. Nas versões
anteriores do SDK para o consumidor, os apps fluíam entre os estados. Com essa arquitetura modular, você cria um objeto MapViewSession
e tem a opção de mostrar a sessão no mapa. Se nenhuma sessão for exibida, o mapa vai mostrar o mesmo conteúdo que usa apenas o SDK do Maps para iOS.
Um objeto MapViewSession
representa uma única instância de uso do ciclo de vida de um
módulo. As sessões são os pontos de acesso nas APIs do módulo. Por exemplo,
uma sessão de Compartilhamento de jornada segue uma única viagem. Você interage com o objeto JourneySharingSession
para monitorar a viagem.
Objeto TripModel
Nas versões anteriores do SDK do consumidor, uma instância de TripService
permite monitorar apenas uma viagem em tempo real por vez. Ao usar um objeto TripModel
, é possível monitorar várias viagens em tempo real em uma instância de TripService
.
Uma instância do TripModel
pode ser criada no TripService
, e cada instância do TripModel
está vinculada a uma viagem específica.
A instância TripModel
chamará eventos de atualização se um assinante registrado estiver na viagem quando ela for atualizada.
O objeto TripModel
também pode ser usado para criar uma instância do
objeto JourneySharingSession
.
MapViewSession
estados
Uma instância MapViewSession
pode ser adicionada em apenas um mapView
por vez e pode
estar em um dos dois estados a seguir:
O estado
GMTCMapViewSessionStateInactive
indica que esseMapViewSession
ainda não foi adicionado a nenhummapView
ou que foi removido de ummapView
. Quando a instânciaMapViewSession
for removida de ummapView
, o métododidRemoveFromMapView
será chamado.Chamar o método
hideMapViewSession
ouhideAllMapViewSessions
remove omapViewSession
de ummapView
:[_mapView hideMapViewSession:mapViewSessionA];
ou
[_mapView hideAllMapViewSessions];
O estado
GMTCMapViewSessionStateActive
indica que esseMapViewSession
foi adicionado a ummapView
. Quando uma instância doMapViewSession
for adicionada a ummapView
, o métododidAddToMapView
será chamado. Chamar o métodoshowMapViewSession
adiciona omapViewSession
aomapView
de destino:[_mapView showMapViewSession:mapViewSessionA];
Como usar componentes somente de dados e da interface do usuário
É possível criar um app de transporte por aplicativo usando componentes somente de dados ou as APIs do elemento da interface do usuário fornecidas pela solução de viagens e entregas sob demanda.
Como usar componentes somente de dados
Para criar um app de transporte por aplicativo usando componentes somente de dados, faça o seguinte:
- Inicialize um objeto
GMTCServices
especificando o ID do provedor e o provedor do token de acesso. - Consiga a propriedade
tripService
da instância compartilhada do objetoGMTCServices
. - Crie ou recupere uma instância de um objeto
GMTCTripModel
para uma viagem especificada usando o métodotripModelForTripName
do objetotripService
. - Registre callbacks na instância
GMTCTripModel
para iniciar o monitoramento de viagens.
O exemplo a seguir mostra como usar componentes somente de dados:
[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];
Usar as APIs de elementos da interface
Siga este procedimento para criar um app consumidor com APIs do elemento da interface do usuário da solução de viagens e entregas sob demanda:
- Inicialize um objeto
GMTCServices
especificando o ID do provedor e o provedor do token de acesso. - Inicialize um objeto
GMTCMapView
para renderizar o mapa base. - Consiga a propriedade
tripService
da instância compartilhada do objetoGMTCServices
. - Crie ou recupere uma instância de um objeto
GMTCTripModel
para uma viagem especificada usando o métodotripModelForTripName
do objetotripService
. - Crie um objeto
GMTCJourneySharingSession
com a instânciaGMTCTripModel
. - Mostre o objeto
GMTCJourneySharingSession
namapView
. - Registre callbacks na instância
GMTCTripModel
para iniciar o monitoramento de viagens.
O exemplo abaixo mostra como usar as APIs de interface do usuário:
[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];
Mudanças no código de arquitetura modular
Se o app de serviço de transporte por aplicativo usa versões anteriores do SDK Consumer, a arquitetura modular atualizada vai exigir algumas mudanças no código. Esta seção descreve algumas dessas mudanças.
Monitoramento de viagens
A arquitetura modular atualizada requer alterações de código para usuários da camada de dados e da interface do usuário.
Nas versões anteriores, um usuário da camada de dados pode lidar com o monitoramento de viagem usando o seguinte código:
GRCTripRequest *tripRequest =
[[GRCTripRequest alloc] initWithRequestHeader:[GRSRequestHeader defaultHeader]
tripName:tripName
autoRefreshTimeInterval:1];
GRCTripService *tripService = [GRCServices sharedServices].tripService;
[tripService registerServiceSubscriber:self];
[tripService setActiveTripWithRequest:tripRequest];
Ao usar a arquitetura modular, um usuário da camada de dados usaria o seguinte código:
GMTCTripService *tripService = [GMTCServices sharedServices].tripService;
GMTCTripModel *tripModel = [tripService tripModelForTripName:tripName];
tripModel.options.autoRefreshTimeInterval = 1;
[tripModel registerSubscriber:self];
Nas versões anteriores, um usuário da interface do usuário pode processar o monitoramento de viagens usando o seguinte código:
// Show the Journey Sharing user interface.
[self.mapView startTripMonitoring];
// Hide the Journey Sharing user interface.
[self.mapView resetCustomerState];
Com a arquitetura modular, um usuário de interface do usuário usaria o seguinte 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];